3

このコードが終了したときの結果はmyObject?

object myObject = "something";
object yourObject = null;

myObject = null ?? yourObject;
4

3 に答える 3

2

myObject は null になります

これは次のように翻訳されます -

if (null == null)
    myObject = yourObject;
else
    myObject = null;
于 2010-10-19T17:56:42.233 に答える
1

キックのためだけに、ここに小さなテーブルがあります:

A ?? B-> R
---------------------
?? 任意->a; ここで、aはnullではありません
ヌル ??b-> b; 任意のb
ヌル ??null-> null; 以前から暗示

そして、これ??は(驚きです!)右に関連付けられた中置演算子なので、x ?? y ?? z-> x ?? (y ?? z)。とのよう&&||??も短絡動作です。

...から?? 演算子(C#リファレンス)

nullでない場合は、左側のオペランドを返します(??)。それ以外の場合は、右のオペランドを返します。

... C#3.0言語リファレンスから:

フォームのnull合体式?? bは、aがnull許容型または参照型である必要があります。aがnull以外の場合、??の結果 bはaです。それ以外の場合、結果はbです。この操作は、aがnullの場合にのみbを評価します。

于 2010-10-19T18:13:46.143 に答える
1

合体演算子は次のように変換されます。

x ?? y
x != null ? x : y

したがって、あなたが持っているもの:

myObject = null != null ? null : yourObject;

null は常に null になるため、これは実際にはかなり無意味です。

于 2010-10-19T18:03:14.283 に答える