◆ 書き方はメソッドでも static な関数の引数に渡してるから呼び出しはできる

拡張メソッドは null に対して使っても例外がでません

こんなコードを準備して
public class A
{
    public void print()
    {
        Console.WriteLine("A");
    }
}

public static class SA
{
    public static void exPrint(this A a)
    {
        Console.WriteLine("A");
    }
}

メソッド呼び出しをしてみます
a.print();
a.exPrint();

a = null;
try
{
    a.print();
}
catch
{
    Console.WriteLine("error");
}
a.exPrint();
A
A
error
A

拡張メソッドの実体は static な関数でメソッド風に書いたのを関数呼出しにしてくれるものなので メソッド呼び出しでは例外が出ないんですね

this をつけた引数が null なので その引数に対して null か確認するようにすれば null だと別の処理にもできます

null のメソッド呼び出しで例外にならないのでこっちのほうがいいですね
全部拡張メソッドにしたいくらい

?. で呼び出せばいいというのもありますけどそれもよくよく書き忘れてますから