C# では、default キーワードによってジェネリッククラスの型 T に既定値を割り当てることができます。ここでは、単純なサンプルによってその動作を確認しています。
スポンサーリンク
default キーワードによる既定値 : 値型 ( 0 ) 参照型 ( null )
default キーワードにって割り当てられる既定値は、int や long などの値型の場合は 0 、string や class オブジェクトなどは null が割り当てられます。構造体の場合は、構造体のメンバ変数ごとの型によって、0 か null が割り当てられます。
以下のサンプルコードを参照ください。また、詳細はサンプル内のコメントを参照ください。
C#
// サンプルで使用するジェネリッククラス public class DefaultTest<T>; { public T GetDefault() { // default キーワードで既定値を設定しリターン T d = default(T); return d; } } // サンプルで使用する構造体 public struct DefaultStruct { public int i; // 値型 public object o; // 参照型 } // サンプルで使用するユーザークラス public class DefaltClass { // ToString メソッドをオーバーライド public override string ToString() { return "default string"; } } /* * 以下、動作確認コード */ // 値型 int の動作確認 DefaultTest<int> dti = new DefaultTest<int>(); Console.WriteLine(dti.GetDefault().ToString()); // 0 // 参照型(null 許容型) string の動作確認 DefaultTest<string> dts = new DefaultTest<string>(); //Console.WriteLine(dts.GetDefault().ToString()); // ★例外発生 // 構造体の動作確認 DefaultTest<DefaultStruct> dtst = new DefaultTest<DefaultStruct>(); Console.WriteLine(dtst.GetDefault().i.ToString()); // 0 //Console.WriteLine(dtst.GetDefault().o.ToString()); // ★例外発生 // ユーザークラスの動作確認 DefaultTest<DefaltClass> dtc = new DefaultTest<DefaltClass>(); //Console.WriteLine(dtc.GetDefault().ToString()); // ★例外発生 // 発生する例外の内容 // System.NullReferenceException // オブジェクト参照がオブジェクト インスタンスに設定されていません。