メンバー アクセスを実行する前に、null 条件演算子を使用して null をテストできることは既に知ってい ます。
例えば :
int? length = customers?.Length; // null if customers is null
Customer first = customers?[0];
customers
が null の 場合、null を返しcustomers?.Length
、それが変数になりますcustomers?.Length
null
int? length = ...
また、マルチスレッド環境でのメソッド呼び出しの単一のアトミック操作に使用できることも知っています。
public void OnFoo()
{
Foo?.Invoke(this, EventArgs.Empty);
}
しかし
AFAIU - もしそうFoo
ならnull
Foo?.Invoke(this, EventArgs.Empty);
また〜だnull
そして、私たちは残っています
public void OnFoo()
{
null; //compilation error
}
そして、私は尋ねます:
質問
null条件演算子は、nullをテストするためだけのものではないようです。ある場合は、さらに深く移動します: x?.y?.c?.d
-
しかし、それはコードのトグルのようにも機能します:
このような:
public void OnFoo()
{
Foo?.Invoke(this, EventArgs.Empty); //Let's assume Foo =null;
}
なる
public void OnFoo()
{
}
私は正しいですか?その点に関するドキュメントは見つかりませんでした。