まず、私はこの質問に使用されるタイトルについて謝ります。私はそれを尋ねる方法や検索する方法さえ知らないので、どこかに、このような質問があるかもしれません。C#6.0の新しい構文/新しいnullチェック構文の違い?
私は最近、私が前に見たことがないのVisual Studio 2015の潜在的な修正時に困惑します。 EventHandlers
を構築するとき、私は通常、このような何か:
public event EventHandler MyEvent;
internal void onMyEvent(EventArgs eventArgs) {
if(MyEvent != null) {
MyEvent(this, eventArgs);
}
}
しかし、今、Visual Studioの2015のif
声明アウトグレーと対応する括弧をして、ホバリング時に、デリゲート呼び出しがを簡素化することができるというメッセージが表示されます。簡略版は次のようになります。
public event EventHandler MyEvent;
internal void onMyEvent(EventArgs eventArgs) {
MyEvent?.Invoke(this, eventArgs);
}
これはどういう仕組みですか?メソッドnull
またはコードが呼び出されてException
がスローされない場合は、の前の式が実行されるとが実行されますか? 'はnullですか?
また、変数/メソッド/メソッドが ''のnull
であるかどうかを確認する文をすべて置き換えることができますか? '、コードの可読性を脇に置いていますか?
サイドノート:私はそれを前に見たことがないので、私は、6.0、これは、C#の新しいバージョンからであると仮定しています。私が間違っている場合は私を修正してください。
それは新しい構文です:https://msdn.microsoft.com/en-us/library/dn986595。 aspx –
そしてそれはNull条件演算子 – rbm
と呼ばれています。あなたの助けに感謝@allan。この質問の回答を今投稿します。 – auhmaan