This has been discussed a number of times in very long and somewhat heated threads (Smart casts and nullability in single-threaded contexts - #11 by mslenc).
Fundamentally the compiler can’t be sure that abc
won’t be null when you read it. (you can add an instruction in between changing abc
or there might another thread changing it).