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

C# Objektinitialisierer

C#3.0 (.NET 3.5) hat eingeführtSyntax des ObjektinitialisierersDies ist eine neue Methode zur Initialisierung von Klassen oder Sammlungsobjekten. Der Initialisierungsprogrammierer ermöglicht es Ihnen, Werte für Felder oder Eigenschaften zuzuweisen, ohne den Konstruktor aufrufen zu müssen.

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"   
                                    };
    }
}

Im obigen Beispiel wurde die Klasse Student ohne Konstruktor definiert. Im Main()-Methoden创建了Student对象,并同时为花括号中的所有或某些属性分配了值。这被称为对象initialisierungs语法。

Der Compiler kompiliert den obigen Initialisierungscode wie folgt.

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

Syntax der Sammlungsinitialisierung

Sie können die Syntax der Sammlungsinitialisierung verwenden, um Sammlungen auf die gleiche Weise wie Klassenobjekte zu initialisieren.

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 
                                                };

Sie können auch eine Sammlung und ein Objekt gleichzeitig initialisieren.

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" } 
                };

Sie können auch null als Element angeben:

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

Vorteile der Initialisierer

  • Die Syntax der Initialisierer macht den Code lesbarer und einfacher, Elemente in eine Sammlung hinzuzufügen.

  • Sehr nützlich in Multithreading.