2016年9月7日水曜日

C#7.0の新機能:is演算子(今までとは一味違う)

VisualStudio15で追加される予定のC#7.0 をVisualStudio15 Preview4で確認してみました。

今までのis演算子の使用方法が増えるみたいです。

今までは、インスタンスがObjectクラスで渡っていた時など、as でキャストして、nullチェックしていました。
それが、isを使うことにより、キャスト+nullチェックができるようになるみたいです。



Object obj = new SampleClass();
if (obj is SampleClass sample)
{
    Console.WriteLine($"{sample.Message}");
}




C# 7のコードを展開するとこうなる



Object obj = new SampleClass();
var sample = obj as SampleClass;
Boolean isNotNull = (sample != null);
if (isNotNull)
{
    Console.WriteLine("{0}", sample.Message);
}

補足

内部的には、is 演算子の後ろのTypeでas演算子を使ってキャストするため、
もちろん、ベースクラスにキャストもできます。

public class SampleBaseClass
{
    public String Message { get; set; } = "message";
}

public class SampleClass : SampleBaseClass
{
}

class Program
{
    static void Main()
    {
        Object obj = new SampleClass();
        if( obj is SampleBaseClass sample)
        {
            Console.WriteLine( $"{sample.Message}" );
        }
    }
}

0 件のコメント:

コメントを投稿