次のように私は2つのコンストラクタを持つクラスを持っている場合:コンストラクタが最初のコンストラクタに与えられたオブジェクトを使って別のコンストラクタを呼び出すと、nullをチェックできますか?
class Foo
{
public Foo(string name)
{...}
public Foo(Bar bar): base(bar.name)
{...}
}
私はnull参照の例外を取得する前にバーがnullであるかどうかを確認することができますいくつかの方法がありますか?
これは恐ろしいと間違っているしたい場合は例外ArgumentNullExceptionを投げます。構築中に例外をスローすると、オブジェクトが正常に構築されなかったことを意味します。これは、デストラクタが呼び出されないことを意味します。 DOを適切に処理する必要があるリソースを既に割り当てている場合は、クラスを微妙にデバッグするのが難しくなりました。建設中の例外:ちょうどいいえと言う。 nameがnullの場合、Fooは代わりにbarfを使うべきではありません。あるいは、名前設定コードを両方のコンストラクターが呼び出せるスタティックに抽出することもできます。 –
@Dirk meh、約99.99%のC#クラス*にはファイナライザがありません –
true、これはほんの0.01%です。 –