Здравствуйте, Jack128, Вы писали:
J>Здесь https://github.com/dotnet/roslyn/issues/5032
J>Ну и оно же в Design Notes for Aug 18 https://github.com/dotnet/roslyn/issues/5033
На этапе компиляции в большинстве случаев и так понятно будет в данной точке null value или нет.
В исходном примере использование string — лишнее. Надо не ерундой заниматься, а нормально типы выводить.
string s;
string? ns = "hello";
s = ns; // warning
if (ns != null) { s = ns; } // ok
WriteLine(ns.Length); // warning
WriteLine(ns?.Length); // ok
ns в данном коде это константа. В 2015 году для данного кода все ok должны быть warning, а warning это ok.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.