수색…


통사론

  • SomeClass sc = 새로운 SomeClass {Property1 = value1, Property2 = value2, ...};
  • SomeClass sc = 새로운 SomeClass (param1, param2, ...) {Property1 = value1, Property2 = value2, ...}

비고

생성자 괄호는 인스턴스화되는 유형이 기본 (매개 변수없는) 생성자를 사용할 수있는 경우에만 생략 할 수 있습니다.

간단한 사용법

객체 이니셜 라이저는 객체를 만들고 즉시 몇 가지 속성을 설정해야하지만 사용할 수있는 생성자만으로는 충분하지 않을 때 편리합니다. 수업이 있다고 가정 해 보겠습니다.

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }

    // the rest of class definition
}

이니셜 라이저를 사용하여 클래스의 새 인스턴스를 초기화하려면 :

Book theBook = new Book { Title = "Don Quixote", Author = "Miguel de Cervantes" };

이것은

Book theBook = new Book();
theBook.Title = "Don Quixote";
theBook.Author = "Miguel de Cervantes";

익명 형식의 사용법

개체 이니셜 라이저는 컴파일러에서 생성 된 형식 인 익명 형식을 초기화하는 유일한 방법입니다.

var album = new { Band = "Beatles", Title = "Abbey Road" };

이러한 이유 때문에 객체 초기화 프로그램은 LINQ select 쿼리에서 널리 사용됩니다. 쿼리 된 객체의 원하는 부분을 지정하는 편리한 방법을 제공하기 때문에 LINQ select 쿼리에 널리 사용됩니다.

var albumTitles = from a in albums 
                  select new 
                  { 
                     Title = a.Title, 
                     Artist = a.Band 
                  };

기본이 아닌 생성자와 함께 사용

필요한 경우 객체 초기화 프로그램을 생성자와 결합하여 유형을 초기화 할 수 있습니다. 예를 들어 다음과 같이 정의 된 클래스를 가져옵니다.

public class Book {
    public string Title { get; set; }
    public string Author { get; set; }

    public Book(int id) {
        //do things
    }

    // the rest of class definition
}

var someBook = new Book(16) { Title = "Don Quixote", Author = "Miguel de Cervantes" }

그러면 Book(int) 생성자로 Book 을 인스턴스화 한 다음 이니셜 라이저의 각 속성을 설정합니다. 그것은 다음과 같습니다 :

var someBook = new Book(16);
someBook.Title = "Don Quixote";
someBook.Author = "Miguel de Cervantes";


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow