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という生命体が誕生した。
おやすみなさい。