読者です 読者をやめる 読者になる 読者になる

インスタンスが null の場合でも拡張メソッドの呼び出しは可能

インスタンスが null の場合にメソッド呼び出しを行うと、System.NullReferenceException 例外が生成されますが、拡張メソッドの場合は、インスタンスが null でも呼び出しが可能です。

using System;

public class Foo {
    public void Hello() {
        Console.WriteLine("Hello!!");
    }
}

public static class Extension {
    public static void Goodbye(this Foo foo) {
        Console.WriteLine("Goodbye!!");
    }
}

class Program {
    static void Main() {
        Foo foo = new Foo();
        foo.Hello();       // Hello
        foo.Goodbye();     // Goodbye!!

        Foo foo2 = null;
        // foo2.Hello();   // System.NullReferenceException
        foo2.Goodbye();    // Goodbye!!
    }
}

実行結果です。

Hello!!
Goodbye!!
Goodbye!!