Извините заранее: этот вопрос исходит от ядрового, нереформированного разработчика С++, пытающегося изучить продвинутый С#. Рассмотрим следующее:
if (myUserDefinedObject != null)
{
myUserDefinedObject.ToString();
}
Это, очевидно, не является потокобезопасным. С другой стороны, я видел два учебника, которые говорят?. (Null условный оператор или "Elvis Operator" ), например,
myUserDefinedObject?.ToString();
Безопасный поток. Если компилятор не обертывает вокруг него обложки [mutex?] Под обложками (дрожь), я не понимаю, как это может быть правдой. Если эта идиома является потокобезопасной, может ли кто-нибудь указать мне техническое описание того, как это делается? Если он не защищен потоком, есть ли у кого-нибудь ссылка, которая на самом деле говорит, что это не так?