Aracılığıyla paylaş


new İşleci (C# Başvurusu)

Nesneleri oluşturmak ve Kurucularını Çağırmak için kullanılır.Örne?in:

Class1 obj  = new Class1();

Ayrıca anonim türlerin örnekleri oluşturmak için kullanılır:

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

new Değer türleri için varsayılan kurucu çağırmak için de işleci kullanılır.Örne?in:

int i = new int();

Yukarıdaki deyimi içinde i için başlatılan 0, türü için varsayılan değer olan int.Deyimi aşağıdaki gibi aynı etkiye sahiptir:

int i = 0;

Varsayılan değerlerin tam listesi için bkz: Varsayılan Değerler Tablosu (C# Başvurusu).

Bunun için bir varsayılan kurucu bildirmek için bir hata olduğunu unutmayın bir struct her değer türü örtülü olarak genel varsayılan bir oluşturucuya sahip olduğu.Parametreli yapıcılar başlangıç değerlerini ayarlamak için yapı türü bildirmek mümkündür, ancak bu yalnızca varsayılan dışındaki değerler gerekli olduğunda gereklidir.

Başvuru türü gibi sınıflar öbek üzerinde oluşturulan nesneleri karşın yapılar gibi değer türü nesneleri yığında oluşturulur.Her iki türdeki nesneleri otomatik olarak yok edilir, ancak kapsam dışına gittiğinizde değer türlerine göre nesneler yok edilir, nesnelere bağlı iken baþvuru türleri bunları son başvuru kaldırıldıktan sonra belirsiz bir anda yok edilir.Büyük miktarda bellek, dosya tanıtıcıları veya ağ bağlantıları gibi sabit kaynaklarını tükettiği başvuru tipleri için bazen nesne mümkün olan en kısa sürede yok emin olmak için deterministik sonlandırılması kullanmayı tercih edilir.Daha fazla bilgi için bkz. using Deyimi (C# Başvurusu).

new Operatör olamaz aşırı.

new Operator başarısız bellek ayrılamadı, istisna atar OutOfMemoryException.

Örnek

Aşağıdaki örnekte, bir struct nesnesi ve bir sınıf nesnesi oluşturulur ve kullanılarak başlatılan new işleci ve değerler atanır.Varsayılan ve atanan değerleri görüntülenir.

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

Varsayılan değer bir dize örnek bildirimde null.Bu nedenle, onu görüntülenmez.

C# dil belirtiminin

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.

Başvuru

C# Anahtar Sözcükleri

İşleç Anahtar Sözcükleri (C# Başvurusu)

new (C# Başvurusu)

Anonim Türler (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu