nullを代入した時点で例外
未知のぬるぽが発生する前に、変数にnullが代入された時点で検出する。
というのをふと思いついたので書いてみたけど、使えるかな・・・(あまり利用場面が思い浮かばない)。
何か頭が働かないので(眠いだけ?)、余分なコードが含まれているかもしれません。
public class Class1 { public class FooCore { public string Message { get; set; } } public class PreFoo { private FooCore core = null; public PreFoo( string message ) { this.core = new FooCore{ Message = message }; } public static implicit operator Foo( PreFoo f ) { // ちゃんと例外クラスを定義すべきだけど手抜き if ( f == null ) throw new Exception( "ぬるが代入されたよ!" ); return new Foo( f.core ); } } public class Foo { private FooCore core = null; public Foo( FooCore core ) { this.core = core; } public void Write() { Console.WriteLine( this.core.Message ); } } private PreFoo CreateFoo( string message ) { return message == "yafoo!" ? null : new PreFoo( message ); } public void Test1() { try { Foo f = this.CreateFoo( "yafoo!" ); //Foo f = (PreFoo)null; } catch ( Exception e ) { Console.WriteLine( e.Message ); } } }
ぬるが代入されたよ!
PreFooとFooを継承関係にするとimplicitが使えなくなるのでFooCoreという生命体が誕生した。
おやすみなさい。