Как вызвать разрыв Nullable?C#

Место общения программистов C#
Ответить
Anonymous
 Как вызвать разрыв Nullable?

Сообщение Anonymous »

Если я запускаю приведенный ниже код в режиме x86 (32-разрядный) (.NET Framework 4.7.2 на последней машине с Windows 11), то, как и ожидалось, он записывает в консоль (доказывая, что считанные данные не являются одним из двух записываемых значений) из-за разрыва: Так что это ожидаемо. И основываясь на этих ссылках, а также комментариях Липперта на https://ericlippert.com/2012/12/20/null ... -part-one/, я ожидал, что Nullable будет также наблюдается разрыв.
И тем не менее, это не так (раскомментируйте код ниже, чтобы воспроизвести его). Конечно, это законно, я уверен. Тот факт, что вам говорят, что что-то небезопасно, не означает, что это определенно не сработает — это совершенно справедливо, чтобы это работало. Но мне интересно, почему разрыв не происходит...
Есть ли способ вызвать разрыв на Nullable?
using System;
using System.Threading.Tasks;

namespace ConsoleApp2
{
public class Program
{
public static void Main(string[] args)
{
long bob = 0;
//long? bob = 0;

long small = 0;
long large = long.MaxValue;

Task.Run(() =>
{
do
{
bob = small;
bob = large;
} while (true);
});

for (long i = 0; i < long.MaxValue - 2; i++)
{
var value = bob;

if (value != small && value != large)
{
Console.WriteLine("very bad");
}
}

Console.WriteLine("finished");
Console.ReadLine();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... llablelong
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»