やりたいこと : インスタンスが null だったら (null) と書く...
public class foo {
private int value;
public foo(int v) { value = v; }
public void print() {
if ( this == null )
System.Console.WriteLine("(null)");
else
System.Console.WriteLine(value);
}
public static void Main() {
foo f;
f = new foo(123); f.print();
f = null; f.print(); // ←※
}
}
※ 当然のことながら ぬるり(null 参照例外)が飛んできますね。
そんなアナタに拡張メソッド:
public static class fooExtension {
public static void print(this foo f) {
if ( f == null ) System.Console.WriteLine("(null)");
else f.print_();
}
}
public class foo {
private int value;
public foo(int v) { value = v; }
internal void print_() {
System.Console.WriteLine(value);
}
public static void Main() {
foo f;
f = new foo(123); f.print();
f = null; f.print(); // 無問題!
}
}