29

動的オブジェクトに対してnullチェックを実行するにはどうすればよいですか?

擬似コード:

public void Main() {
    dynamic dynamicObject = 33;
    if(true) { // Arbitrary logic
        dynamicObject = null;
    }
    Method(dynamicObject);
}

public void Method(dynamic param) {
    // TODO: check if the content of 'param' is equal to null
}
4

4 に答える 4

42

null動的オブジェクトに、の解釈方法を変更するカスタム等式演算子が含まれる可能性について心配していますか?もしそうなら、ただ使用してくださいObject.ReferenceEquals

if (Object.ReferenceEquals(null, param)) {
  .......
}
于 2011-08-11T16:44:50.590 に答える
0

いつでもオブジェクト型のパラメータを作成できます。これはコンパイラが実行していることです。パラメータを動的に入力すると、そのメソッド内でのみ、パラメータのすべての使用に動的呼び出しを使用することを意味しますが、外部では、オブジェクト型の署名にすぎません。dynamicObjectのより強力な使用法は、呼び出すメソッドのオーバーロードを設定することです。したがって、例を同じに保ち、オーバーロードが2つしかない場合は、ランタイムタイプに基づいて2つのメソッドのいずれかを呼び出すことになります。より多くのタイプのためにさらに追加します。

public void Main() {
    dynamic dynamicObject = 33;
    if(true) { // Arbitrary logic
        dynamicObject = null;
    }
    Method(dynamicObject);
}
public void Method(int param) {
  //don't have to check check null
  //only called if dynamicObject is an int
}
public void Method(object param) {
// will be called if dynamicObject is not an int or null
}
于 2011-08-11T18:41:55.480 に答える
0

シンプルさを使用できます:

var s = data.servicePhoneNumber is null ? "" : data.servicePhoneNumber.Value;
于 2018-11-01T09:30:50.510 に答える
0

速い方法は次のようになります:

if (_owner is null)
{

}
于 2019-04-02T08:59:23.047 に答える