English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# オブジェクト初期化子

C#3.0(.NET 3.5)を導入しました。オブジェクトの初期化子の構文これは、クラスやコレクションオブジェクトを初期化する新しい方法です。オブジェクトの初期化プログラムは、コンストラクタを呼び出すことなく、フィールドやプロパティに値を割り当てることを許可します。

public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        Student std = new Student() { StudentID = 1, 
                                      StudentName = "Bill", 
                                      Age = 20, 
                                      Address = "New York"   
                                    };
    }
}

上記の例では、Studentクラスを構造体として定義し、Main()メソッド内でStudentオブジェクトを作成し、大括弧内のすべてのまたは一部の属性に値を割り当てます。これをオブジェクト初期化子文法と呼びます。

コンパイラは上記の初期化を以下のようにコンパイルします。

Student __student = new Student();
__student.StudentID = 1;
__student.StudentName = "Bill";
__student.Age = 20;
__student.StandardID = 10;
__student.Address = "Test";
Student std = __student;

コレクション初期化子文法

コレクション初期化子文法を使用して、クラスオブジェクトと同様にコレクションを初期化できます。

var student1 = new Student() { StudentID = 1, StudentName = "John" };
var student2 = new Student() { StudentID = 2, StudentName = "Steve" };
var student3 = new Student() { StudentID = 3, StudentName = "Bill" } ;
var student4 = new Student() { StudentID = 3, StudentName = "Bill" };
var student5 = new Student() { StudentID = 5, StudentName = "Ron" };
IList<Student> studentList = new List<Student>() { 
                                                    student1, 
                                                    student2, 
                                                    student3, 
                                                    student4, 
                                                    student5 
                                                };

您还可以同时初始化集合和对象。

IList<Student> studentList = new List<Student>() { 
                    new Student() { StudentID = 1, StudentName = "John"} ,
                    new Student() { StudentID = 2, StudentName = "Steve"} ,
                    new Student() { StudentID = 3, StudentName = "Bill"} ,
                    new Student() { StudentID = 3, StudentName = "Bill"} ,
                    new Student() { StudentID = 4, StudentName = "Ram" } ,
                    new Student() { StudentID = 5, StudentName = "Ron" } 
                };

nullを要素として指定することもできます:

IList<Student> studentList = new List<Student>() { 
                                    new Student() { StudentID = 1, StudentName = "John"} ,
                                    null
                                };

初期化者の利点

  • 初期化プログラム语法はコードの可読性を向上させ、要素をコレクションに追加するのを簡単にします。

  • マルチスレッドで非常に役立ちます。