Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис для компенсации?

В языке C# с давних времён есть оператор ‘is’ назначение которого довольно ясное

if (p is Point) Console.WriteLine("p is Point");
else Console.WriteLine("p is not Point or null");


Кроме того его можно использовать для проверок на null

if (p is object) Console.WriteLine("p is not null");
if (p is null) Console.WriteLine("p is null");


В C# 7 анонсирована новая возможность pattern-matching

if (GetPoint() is Point p) Console.WriteLine($"X={p.X} Y={p.Y}");
else Console.WriteLine("There is not point.");

if (GetPoint() is var p) Console.WriteLine($"X={p.X} Y={p.Y}");
else Console.WriteLine("There is not point.");


Вопрос, что произойдёт в обоих случаях, если метод вернёт ‘null’? Вы уверены?
Читать дальше →
Source: news

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *