C# の単一の疑問符?? と二重の疑問符??
? : 単一の疑問符は、int、double、bool、および null に直接割り当てることができないその他のデータ型に null を割り当てるために使用されます。これは、データ型が Nullable であることを意味します。
整数?i = 3;
に相当:
Nullable<int> i = 新しい Nullable<int>(3);int i; //デフォルト値 0 int? ii; //デフォルト値 null
?? : 二重疑問符は、変数が null の場合に指定された値を返すと判断するために使用できます。
次に詳しく説明していきます。
C# の null 許容型 (Nullable)
C# は、基礎となる値の型の通常の範囲内の値に null 値を加えた値を表すことができる、null 許容型 ( nullable型)という特別なデータ型を提供します 。
たとえば、「ヌル可能 Int32」と発音される Nullable<Int32> には、-2,147,483,648 から 2,147,483,647 までの任意の値を割り当てることができ、Null 値を割り当てることもできます。同様に、Nullable<bool> 変数には true、false、または null を割り当てることができます。
数値型またはブール型に null を割り当てる機能は、値が割り当てられない可能性のある要素を含むデータベースやその他のデータ型を扱う場合に特に便利です。たとえば、データベース内のブール型フィールドには、true または false の値を格納することも、未定義の値を格納することもできます。
null 許容型 (nullable 型)を宣言する 構文は 次のとおりです。
<データ型> ? <変数名> = null;
次の例は、Null 許容データ型の使用を示しています。
例
システム を使用して ; namespace CalculatorApplication { class NullablesAtShow { static void Main ( string [ ] args ) { int ? num1 = null ; 整数 ?数値2 = 45 ; ダブル ?num3 = 新しい double ? ( ) ; ダブル ?num4 = 3.14157 ; ブール ?ブール値 = new bool ? ( ) ; // 値を表示 Console . WriteLine ( "null 許容型の値を表示: {0}、{1}、{2}、{3}", num1, num2, num3, num4 ) ; Console . WriteLine ( "null 許容のブール値: {0}", boolval ) ; Console . ReadLine ( ) ; } } }
上記のコードをコンパイルして実行すると、次の結果が生成されます。
null 許容型の値を表示: 、 45、 、 3.14157 null 許容のブール値:
Null 合体演算子 ( ?? )
Null 合体演算子は、Null 許容型および参照型のデフォルト値を定義するために使用されます。Null 合体演算子は、Null 許容型が Null の場合の型変換のデフォルトを定義します。null 合体演算子は、オペランドの型を別の null 許容 (または null 非許容) 値型のオペランドの型に暗黙的に変換します。
最初のオペランドの値が null の場合、演算子は 2 番目のオペランドの値を返し、それ以外の場合は最初のオペランドの値を返します。次の例はこれを示しています。
例
using System ; namespace CalculatorApplication { class NullablesAtShow { static void Main ( string [ ] args ) { double ? num1 = null ; double ? num2 = 3.14157 ; double num3 ; num3 = num1 ; 5.34 ?? Console .WriteLine ( "num3 の値: {0}", num3 ) ; num3 = num2 ?? 5.34 ; Console . WriteLine ( "num3 の値: {0}", num3 ) ; Console . ReadLine ( ) ; } } }
上記のコードをコンパイルして実行すると、次の結果が生成されます。
num3 の値: 5.34 num3 の値: 3.14157