動的オブジェクトでnull-checkを実行するにはどうすればよいですか?
疑似コード:
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
}
動的オブジェクトにnull
の解釈方法を変更するカスタム等価演算子が含まれる可能性を心配していますか?その場合は、Object.ReferenceEquals
if (Object.ReferenceEquals(null, param)) {
.......
}
タイプオブジェクトのパラメーターをいつでも作成できます。これがコンパイラーが行っていることです。パラメータを動的に入力すると、それはそのメソッド内でのみ、paramのすべての使用に対して動的呼び出しを使用していることを意味しますが、外部では、タイプオブジェクトの単なるシグネチャです。 dynamicObjectのより強力な使用法は、呼び出すメソッドのオーバーロードを持つことです。そのため、例を同じに保ち、2つのオーバーロードがある場合、ランタイムタイプに基づいて2つのメソッドの1つを呼び出します。さらにタイプを追加します。
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
}
速い方法は:
if (_owner is null)
{
}
あなたはシンプルさを使うことができます:
var s = data.servicePhoneNumber is null ? "" : data.servicePhoneNumber.Value;