New işleci (C# Başvurusu)new operator (C# reference)

new İşleci, bir türün yeni bir örneğini oluşturur.The new operator creates a new instance of a type.

Ayrıca new as anahtar sözcüğü bir üye bildirim değiştirici veya genel tür kısıtlaması.You can also use the new keyword as a member declaration modifier or a generic type constraint.

Oluşturucu çağrıConstructor invocation

Bir türün yeni bir örneğini oluşturmak için genellikle aşağıdakilerden birini çağırma oluşturucular bu türü kullanarak new işleci:To create a new instance of a type, you typically invoke one of the constructors of that type using the new operator:

var dict = new Dictionary<string, int>();
dict["first"] = 10;
dict["second"] = 20;
dict["third"] = 30;

Console.WriteLine(string.Join("; ", dict.Select(entry => $"{entry.Key}: {entry.Value}")));
// Output:
// first: 10; second: 20; third: 30

Kullanabileceğiniz bir nesne veya koleksiyon Başlatıcı ile new işleci örneği oluşturun ve aşağıdaki örnekte gösterildiği gibi bir ifade bir nesneyi başlatmak için:You can use an object or collection initializer with the new operator to instantiate and initialize an object in one statement, as the following example shows:

var dict = new Dictionary<string, int>
{
    ["first"] = 10,
    ["second"] = 20,
    ["third"] = 30
};

Console.WriteLine(string.Join("; ", dict.Select(entry => $"{entry.Key}: {entry.Value}")));
// Output:
// first: 10; second: 20; third: 30

Dizi oluşturmaArray creation

Ayrıca new işleci aşağıdaki örnekte gösterildiği gibi bir dizi örneği oluşturmak için:You also use the new operator to create an array instance, as the following example shows:

var numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;

Console.WriteLine(string.Join(", ", numbers));
// Output:
// 10, 20, 30

Dizi başlatma söz dizimi, bir dizi örneği oluşturun ve öğeleri bir ifade ile doldurmak için kullanın.Use array initialization syntax to create an array instance and populate it with elements in one statement. Aşağıdaki örnekte, nasıl yapabileceğiniz çeşitli yollar gösterir:The following example shows various ways how you can do that:

var a = new int[3] { 10, 20, 30 };
var b = new int[] { 10, 20, 30 };
var c = new[] { 10, 20, 30 };
Console.WriteLine(c.GetType());  // output: System.Int32[]

Diziler hakkında daha fazla bilgi için bkz. diziler.For more information about arrays, see Arrays.

Anonim türdeki örnek oluşturmaInstantiation of anonymous types

Bir örneğini oluşturmak için bir anonim tür, kullanın new işleci ve nesne Başlatıcısı sözdizimi:To create an instance of an anonymous type, use the new operator and object initializer syntax:

var example = new { Greeting = "Hello", Name = "World" };
Console.WriteLine($"{example.Greeting}, {example.Name}!");
// Output:
// Hello, World!

Tür örnekleri, yok etmeDestruction of type instances

Daha önce oluşturulan tür örnekleri yok gerekmez.You don't have to destroy earlier created type instances. Hem başvuru ve değer türlerinin örnekleri otomatik olarak yok edilir.Instances of both reference and value types are destroyed automatically. Değer türlerinin örnekleri, bunları içeren bir bağlam yok hemen sonra yok edilir.Instances of value types are destroyed as soon as the context that contains them is destroyed. Başvuru türlerinin örnekleri tarafından edilir çöp toplayıcı bunları son başvuruysa kaldırıldıktan sonra belirtilmeyen zaman.Instances of reference types are destroyed by the garbage collector at unspecified time after the last reference to them is removed.

Yönetilmeyen kaynakları içeren türleri için örneğin, bir dosya tanıtıcısı, belirlenimci içerdikleri kaynakları hemen serbest emin olmak için temizleme kullanmak istemiyorsunuz önerilir.For types that contain unmanaged resources, for example, a file handle, it's recommended to employ deterministic clean-up to ensure that the resources they contain are released as soon as possible. Daha fazla bilgi için System.IDisposable API Başvurusu ve using deyimi makalesi.For more information, see the System.IDisposable API reference and the using statement article.

İşleç overloadabilityOperator overloadability

Kullanıcı tanımlı bir tür aşırı yüklenemez new işleci.A user-defined type cannot overload the new operator.

C# dili belirtimiC# language specification

Daha fazla bilgi için new işleci bölümünü C# dil belirtimi.For more information, see The new operator section of the C# language specification.

Ayrıca bkz.See also