English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 };
初期化プログラム语法はコードの可読性を向上させ、要素をコレクションに追加するのを簡単にします。
マルチスレッドで非常に役立ちます。