Udostępnij za pośrednictwem


Operator New (C# odniesienia)

Używane do tworzenia obiektów i wywołania konstruktorów.Na przykład:

Class1 obj  = new Class1();

Również służy do tworzenia wystąpień typów anonimowych:

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

new Operator jest także używany do wywołania konstruktora domyślnego dla typów wartości.Na przykład:

int i = new int();

W poprzednim sprawozdaniu i inicjowana jest 0, która jest wartością domyślną dla typu int.Instrukcja ma taki sam efekt jak poniżej:

int i = 0;

Aby uzyskać pełną listę wartości domyślnych, zobacz Tabela wartości domyślne (C# odniesienia).

Pamiętaj, że jest to błąd zadeklarować domyślnego konstruktora dla struct , ponieważ typ wartości, co ma niejawnie publicznego konstruktora domyślnego.Jest możliwe deklarowanie sparametryzowana konstruktory typu struct, ustawić jego początkowej wartości, ale tylko jest to konieczne, jeżeli wymagane są wartości innej niż domyślna.

Obiekty typu wartości, takie jak strukturach są tworzone na stosie, podczas gdy typ odwołania obiektów, takich jak klasy są tworzone na stercie.Oba typy obiektów są niszczone automatycznie, ale obiekty, na podstawie typów wartości są niszczone, kiedy wykraczają poza zakresem, obiekty na podstawie typy odwołań są niszczone w czasie nieokreślona, po usunięciu ostatniego odniesień do nich.Typy odwołań, które zużywają stałych zasobów, takich jak duże ilości pamięci, dojścia do plików lub połączenia sieciowe czasami jest pożądane zatrudniać prawdopodobnej deterministyczny, aby zapewnić, że obiekt jest niszczony, tak szybko, jak to możliwe.Aby uzyskać więcej informacji, zobacz za pomocą instrukcji (C# odniesienia).

new Operator nie mogą być przeciążone.

Jeśli new operatora nie można przydzielić pamięci, to generuje wyjątek, OutOfMemoryException.

Przykład

W poniższym przykładzie struct do tworzenia i inicjowany przy użyciu obiektu i obiektu klasy new operatora i następnie przypisane wartości.Wartość domyślna i przypisane wartości są wyświetlane.

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
*/

Ogłoszenia w przykładzie, która jest wartością domyślną ciąg null.W związku z tym że nie jest wyświetlany.

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka to najlepsze źródło informacji dotyczących składni i zastosowania języka C#.

Zobacz też

Informacje

Słowa kluczowe języka C#

Operator słowa kluczowe (C# odniesienia)

nowe (C# odwołanie)

Typy anonimowe (Podręcznik programowania C#)

Koncepcje

Podręcznik programowania C#

Inne zasoby

C# odniesienia