- https://github.com/dotnet/csharpstandar ... /variables .md#96-atomicity-of-variable-references
- https://learn.microsoft.com/en-us/dotne ... /variables #96-атомарность-переменных-ссылок
- https://stackoverflow.com/a/1151905/34092
И тем не менее, это не так (раскомментируйте код ниже, чтобы воспроизвести его). Конечно, это законно, я уверен. Тот факт, что вам говорят, что что-то небезопасно, не означает, что это определенно не сработает — это совершенно справедливо, чтобы это работало. Но мне интересно, почему разрыв не происходит...
Есть ли способ вызвать разрыв на 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
Мобильная версия