「C Sharp/null合体演算子」の版間の差分

imported>Administrator
編集の要約なし
imported>Fallout New Tokyo
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
[[C Sharp|C#]]における'''null合体演算子'''(ぬるがったいえんざんし、null coalescing operator)とは、[[C Sharp/null許容型|null許容型]]や[[C Sharp/参照型|参照型]]などにおいて、その[[値]]が[[C Sharp/null|null]]の場合に指定した値を返す[[演算子]]である。なお、null合体演算子は「'''??'''」という記号をもちいるため「'''??演算子'''」と記述されることもあるが、ハテナ2個とか[[ググれ]]ないわ、読み方に困るわで「null合体演算子」で統一することが望ましいとされている。
[[C Sharp|C#]]における'''null合体演算子'''(読み:ぬるがったいえんざんし、[[英語]]:null coalescing operator)とは、[[C Sharp/null許容型|null許容型]]や[[C Sharp/参照型|参照型]]などにおいて、その[[値]]が[[C Sharp/null|null]]の場合に指定した値を返す[[演算子]]である。なお、null合体演算子は「'''??'''」という記号をもちいるため「'''??演算子'''」と記述されることもあるが、ハテナ2個とか[[ググれ]]ないわ、読み方に困るわで「null合体演算子」で統一することが望ましいとされている。


null合体演算子はC# 2.0で追加された機能(演算子)で、同じくC# 2.0で追加された[[C Sharp/null許容値型|null許容値型]]に付随して追加されたものだと思われるが、従来からの[[C Sharp/参照型|参照型]]でも使える。
null合体演算子はC# 2.0で追加された機能(演算子)であり、同じくC# 2.0で追加された[[C Sharp/null許容値型|null許容値型]]に付随して追加されたものだと思われるが、従来からの[[C Sharp/参照型|参照型]]でも使える。


== 記述方法 ==
== 記述方法 ==
12行目: 12行目:
これを[[三項演算子]]で書くと以下のようになる。
これを[[三項演算子]]で書くと以下のようになる。
非常にわかりにくく、とくに初心者に見せるための[[ソースコード]]としては最悪である。
非常にわかりにくく、とくに初心者に見せるための[[ソースコード]]としては最悪である。
[[三項演算子]]は[[N88-BASIC]]などの時代においては[[if文]]よりも高速に[[条件分岐]]できるという理由で乱用され、また「俺かっこいい」と勘違いしたバカが意味もなく乱用するケースも多々見受けられたが、現代においては乱用は避けるべきである。
[[三項演算子]]は[[N88-BASIC]]などの時代においては[[if文]]よりも高速に[[条件分岐]]できるという理由で乱用され、また「俺かっこいい」と勘違いしたバカが意味もなく乱用するケース([[中級者病]])も多々見受けられたが、現代においては乱用は避けるべきである。
<source lang="csharp">
<source lang="csharp">
int z = x != null ? x : y;
int z = x != null ? x : y;
48行目: 48行目:
     }
     }


     // C#で定番のエントリーポイント
     // C#で定番のエントリポイント
     static void Main()
     static void Main()
     {
     {
55行目: 55行目:
         int? x = null;
         int? x = null;


// null合体演算子の例1
        // null合体演算子の例1
         // y = xがnullでなければx, xがnullなら-1
         // y = xがnullでなければx, xがnullなら-1
         int y = x ?? -1;
         int y = x ?? -1;
63行目: 63行目:
         int i = GetNullableInt() ?? default(int);
         int i = GetNullableInt() ?? default(int);


// null合体演算子の例3
        // null合体演算子の例3
// 参照型の場合もnull許容値型の場合と同じ
        // 参照型の場合もnull許容値型の場合と同じ
         string s = GetStringValue();
         string s = GetStringValue();
         Console.WriteLine(s ?? "Unspecified");
         Console.WriteLine(s ?? "Unspecified");
119行目: 119行目:
* [[C Sharp/null許容型|C#/null許容型]]
* [[C Sharp/null許容型|C#/null許容型]]
* [[C Sharp/null|C#/null]]
* [[C Sharp/null|C#/null]]
== 参考文献 ==
<references/>


== 外部リンク ==
== 外部リンク ==
* [http://msdn.microsoft.com/ja-jp/library/ms173224.aspx ?? 演算子 (C# リファレンス) - MSDN]
* [http://msdn.microsoft.com/ja-jp/library/ms173224.aspx ?? 演算子 (C# リファレンス) - MSDN]
== 参考文献 ==
{{reflist}}


{{stub}}
{{stub}}