C# 1.x バージョンでは、値型の変数に null (空の値) の値を割り当てることはできません。割り当てられない場合は、例外が生成されます。 C# 2.0 では、新しい null 許容型が追加され、null 値を含むデータの定義に使用できます。たとえば、nullable <Int32> (nullable int32 型) 型の変数に -2147483648 から 2147483647 を格納できます。またはヌル。同様に、null 許容 <bool> (null 許容 bool 型) 型の変数に true、false、または null を格納できます。 null 許容型を宣言するための構文は次のとおりです。
data_type? variable_name = null;
このうち、data_type は宣言するデータの型に疑問符が続き、variable_name は変数の名前です。
[例] 次の例は、Nullable 型の使用を示しています。
using System;
namespace it-kiso.com
{
class Demo
{
static void Main(string[] args){
int? num1;
int? num2 = 123;
num1 = null;
double? num3 = new double?();
double? num4 = 3.1415926;
bool? boolval = null;
// これらの値を出力する
Console.WriteLine("num1 = {0} \r\n num2 = {1} \r\n num3 = {2} \r\n num4 = {3} \r\n boolval = {4}", num1, num2, num3, num4, boolval);
Console.ReadLine();
}
}
}
操作の結果は次のようになります。
num1 =
num2 = 123
num3 =
num4 = 3.1415926
boolval =
ヌル合体演算子 (??)
Null 合体演算子は、Null 許容型と参照型のデフォルト値を定義するために C# で使用されます。この演算子の左オペランドが null でない場合、演算子は左オペランドを返し、それ以外の場合は右オペランドを返します。たとえば、式a??b
では、 a が空でない場合、式の値は a になり、それ以外の場合は b になります。
Null 合体演算子の左オペランドと右オペランドの型は同じである必要があることに注意してください。そうでない場合は、右オペランドの型を左オペランドの型に暗黙的に変換できます。そうしないと、コンパイル エラーが発生します。
[例] 次の例は、Null 合体演算子の使用例を示しています。
use System;
namespace it-kiso.com
{
class Demo
{
static void Main(string[] args){
int? num1 = null;
int? num2 = 123;
int num3;
num3 = num1 ?? 321;
Console.WriteLine("num3 = {0}", num3);
num3 = num2 ?? 321;
Console.WriteLine("num3 = {0}", num3);
Console.ReadLine();
}
}
}
操作の結果は次のようになります。
num3 = 321
num3 = 123
「 C# の null 許容: Null 許容型」についてわかりやすく解説!絶対に観るべきベスト2動画
C# 言語のハイライト: Null 許容参照型
パート 6 – C# チュートリアル – Nullable Types.avi