15

C# の?: 三項演算子に似たものを見たのを覚えていると思います。これは 2 つの部分しかなく、null でない場合は変数値を返し、null の場合はデフォルト値を返します。このようなもの:

tb_MyTextBox.Text = o.Member ??SOME OPERATOR HERE?? "default";

基本的にこれと同等:

tb_MyTextBox.Text = o.Member != null ? o.Member : "default";

そのようなものは存在しますか、それともどこかでこれを見ていると想像していましたか?

4

4 に答える 4

28

うん:

tb_myTextBox.Text = o.Member ?? "default";

http://msdn.microsoft.com/en-us/library/ms173224(VS.80).aspx

于 2010-10-13T16:12:50.093 に答える
21

うーん、条件演算子とは全然違いますが、ヌル合体演算子(??)のことを考えていると思います。(「似ている」と言ったと思います:)「三項」は演算子のオペランドの数を指すだけであることに注意してください-したがって、条件演算子は三項演算子ですが、ヌル合体演算子は二項演算子です。

大まかに次の形式を取ります。

result = first ?? second;

null のsecond場合にのみ評価されます。first割り当ての対象である必要はありません。たとえば、メソッドの引数を評価するために使用できます。

最初のオペランドnull 許容である必要がありますが、2 番目のオペランドはそうではないことに注意してください。変換に関していくつかの特定の詳細がありますが、単純なケースでは、式全体の型は 2 番目のオペランドの型です。結合性により、演算子の使用をきちんと積み重ねることもできます。

int? x = GetValueForX();
int? y = GetValueForY();
int z = GetValueForZ();

int result = x ?? y ?? z;

xyは null 可能ですが、zと ではないことに注意してくださいresult。もちろん、 null 可能にすることもz できますが、その場合も null 可能にresultする必要があります。

基本的に、オペランドはコードに現れる順序で評価され、null 以外の値が見つかると評価が停止します。

ああ、上記は値型の観点から示されていますが、参照型でも機能します (常にnull 可能です)。

于 2010-10-13T16:14:40.537 に答える
3

"??SOME OPERATOR HERE??" を使用したのはおかしなことですが、探している演算子は "??" です。

tb_MyTextBox.Text = o.Member ?? "default";

http://msdn.microsoft.com/en-us/library/ms173224.aspx

于 2010-10-13T16:14:14.607 に答える
1

はい、Null 合体演算子と呼ばれます。

?? 演算子 (C# リファレンス) (MSDN)

于 2010-10-13T16:14:17.710 に答える