Sdílet prostřednictvím


nový operátor (C#-Reference)

Slouží k vytváření objektů a vyvolat konstruktory.Příklad:

Class1 obj  = new Class1();

Také se používá k vytvoření instancí anonymních typů:

var query = from cust in customers
            select new {Name = cust.Name, Address = cust.PrimaryAddress};

new Operátor se také používá k vyvolání výchozí konstruktor pro typy hodnot.Příklad:

int i = new int();

V předchozím příkazu i je inicializován v 0, což je výchozí hodnota pro typ int.Příkaz má stejný účinek jako následující:

int i = 0;

Úplný seznam výchozích hodnot naleznete v Výchozí hodnoty tabulky (C#-Reference).

Nezapomeňte, že je chyba deklarovat výchozí konstruktor pro struct protože každý typ hodnoty implicitně nemá veřejný výchozí konstruktor.Je možné deklarovat parametrizované konstruktory nastavit jeho počáteční hodnoty typu Struktura, ale to je nutné pouze pokud jsou požadovány jiné než výchozí hodnoty.

Typ hodnoty objekty jako struktur jsou vytvořeny v zásobníku, zatímco objekty typu odkazu jako třídy jsou vytvořeny na haldy.Oba typy objektů jsou zničeny automaticky, ale objekty na základě typů hodnot nejsou zničeny při přístupu mimo rozsah, vzhledem k tomu, že objekty na základě referenční typy jsou zničeny neurčené době po odebrání poslední odkaz na ně.Pro referenční typy, které spotřebovávají pevné prostředky, jako je například velké množství paměti, popisovače souborů nebo připojení k síti je někdy žádoucí využívat deterministický dokončení zajistit co nejdříve zničení objektu.Další informace naleznete v tématu pomocí příkazu (C#-Reference).

new Operátor nemůže být přetížena.

Pokud new operátor selhání přidělení paměti, že vygeneruje výjimku, OutOfMemoryException.

Příklad

V následujícím příkladu struct vytvořen a inicializován pomocí objektu a objekt třídy new operátor a potom přiřadí hodnoty.Výchozí a přiřazené hodnoty jsou zobrazeny.

struct SampleStruct
{
   public int x;
   public int y;

   public SampleStruct(int x, int y)
   {
      this.x = x;
      this.y = y;
   }
}

class SampleClass
{
   public string name;
   public int id;

   public SampleClass() {}

   public SampleClass(int id, string name)
   {
      this.id = id;
      this.name = name;
   }
}

class ProgramClass
{
   static void Main()
   {
      // Create objects using default constructors:
      SampleStruct Location1 = new SampleStruct();
      SampleClass Employee1 = new SampleClass();

      // Display values:
      Console.WriteLine("Default values:");
      Console.WriteLine("   Struct members: {0}, {1}",
             Location1.x, Location1.y);
      Console.WriteLine("   Class members: {0}, {1}",
             Employee1.name, Employee1.id);

      // Create objects using parameterized constructors:
      SampleStruct Location2 = new SampleStruct(10, 20);
      SampleClass Employee2 = new SampleClass(1234, "Cristina Potra");

      // Display values:
      Console.WriteLine("Assigned values:");
      Console.WriteLine("   Struct members: {0}, {1}",
             Location2.x, Location2.y);
      Console.WriteLine("   Class members: {0}, {1}",
             Employee2.name, Employee2.id);
   }
}
/*
Output:
Default values:
   Struct members: 0, 0
   Class members: , 0
Assigned values:
   Struct members: 10, 20
   Class members: Cristina Potra, 1234
*/

Oznámení v příkladu, který je výchozí hodnota řetězec null.Proto nezobrazí.

Specifikace jazyka C#

Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také

Referenční dokumentace

Klíčová slova jazyka C#

Operátor klíčová slova (C#-Reference)

nové (C#-Reference)

Anonymní typy (Příručka programování C#)

Koncepty

Příručka programování C#

Další zdroje

C#-Reference