C# 8 nullable, пометить в коде как "это не может быть null" - PullRequest
2 голосов
/ 09 апреля 2020

Я пробую новую функцию nullable = enabled C# 8.0. И я пришел к одной крошечной проблеме:

        foreach(FileSystemAccessRule rule in directorySecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
        {
            // do something with rule
        }

Это показывает предупреждение, так как компилятор думает, что rule может быть нулем, которого никогда не будет.
Мое текущее исправление таково:

        foreach(FileSystemAccessRule? rule in directorySecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
        {
            if (rule == null) continue;
            // do something with rule
        }

Но я был бы намного счастливее с исправлением, вроде [NeverNull]FileSystemAccessRule rule или чем-то в этом роде. Есть ли что-то подобное? Или любое другое решение?

1 Ответ

5 голосов
/ 09 апреля 2020

, если AuthorizationRuleCollection не объявляет обнуляемость или объявляет их обнуляемыми: компилятор вправе жаловаться. Вы можете использовать оператор dammit, хотя, если вы уверены:

rule!.DoTheThing();

Существует открытый выпуск (на момент написания), чтобы возможно немного изменить это правило в будущем .

...