Sök…


Syntax

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

Anmärkningar

Konstruktörparenteserna kan endast utelämnas om den typ som instanseras har en standard (parameterlös) konstruktör tillgänglig.

Enkel användning

Objektinitierare är praktiska när du behöver skapa ett objekt och ställa in ett par egenskaper direkt, men tillgängliga konstruktörer räcker inte. Säg att du har en klass

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

    // the rest of class definition
}

För att initiera en ny instans av klassen med en initialisering:

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

Detta motsvarar

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

Användning med anonyma typer

Objektinitierare är det enda sättet att initialisera anonyma typer, som är typer som genereras av kompilatorn.

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

Av den anledningen används objektinitierare ofta i LINQ-utvalsfrågor, eftersom de ger ett bekvämt sätt att specificera vilka delar av ett frågat objekt du är intresserad av.

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

Användning med icke-standardkonstruktörer

Du kan kombinera objektinitierare med konstruktörer för att initialisera typer vid behov. Ta till exempel en klass definierad som sådan:

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

Detta kommer först att instansera en Book med Book(int) -konstruktören och sedan ställa in varje egenskap i initialiseraren. Det motsvarar:

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow