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

C# Основы

C# Уровень продвинутый

C# Ориентирован на объекты (OOP)

Инициализатор объектов в 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;

Грамматика инициализации множества

Вы можете использовать грамматiku инициализации множества так же, как и объекты класса.

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

Преимущества инициализатора

  • Синтаксис инициализатора делает код более читаемым и удобным для добавления элементов в коллекцию.

  • Это очень полезно в многопоточности.