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という生命体が誕生した。
おやすみなさい。
■
F#とPHP(Phalanger)のVS2008 Shellを使った開発環境。
Microsoft Download Center: Windows, Office, Xbox & More
http://www.php-compiler.net/doku.php?id=core%3aphp-in-vs2008
最近PC触ってなかったのでさっき.NET3.5とVS2008のSP1を適用しました。時間かかったぜ。β的なものを入れたがためにVSがおかしくなって再インストール!とかなると泣けてくるのでまだ入れないでおこうと思います。