new işleci - işleç new türün yeni bir örneğini oluşturur

işleci new bir türün yeni bir örneğini oluşturur. Anahtar sözcüğünü new üye bildirim değiştiricisi veya genel tür kısıtlaması olarak da kullanabilirsiniz.

Oluşturucu çağrısı

Türün yeni bir örneğini oluşturmak için genellikle işlecini kullanarak new bu türün oluşturucularından birini çağırırsınız:

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

Aşağıdaki örnekte gösterildiği gibi, bir nesnenin new örneğini oluşturup tek bir deyimde başlatmak için işleciyle bir nesne veya koleksiyon başlatıcı kullanabilirsiniz:

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

Hedef türü new

Oluşturucu çağırma ifadeleri hedef türündedir. Diğer bir ifadenin hedef türü biliniyorsa, aşağıdaki örnekte gösterildiği gibi tür adını atlayabilirsiniz:

List<int> xs = new();
List<int> ys = new(capacity: 10_000);
List<int> zs = new() { Capacity = 20_000 };

Dictionary<int, List<int>> lookup = new()
{
    [1] = new() { 1, 2, 3 },
    [2] = new() { 5, 8, 3 },
    [5] = new() { 1, 0, 4 }
};

Yukarıdaki örnekte gösterildiği gibi, her zaman hedef türündeki new bir ifadede parantez kullanırsınız.

bir ifadenin new hedef türü bilinmiyorsa (örneğin, anahtar sözcüğünü kullandığınızda var ), bir tür adı belirtmeniz gerekir.

Dizi oluşturma

Aşağıdaki örnekte gösterildiği gibi bir dizi örneği oluşturmak için işlecini de kullanırsınız new :

var numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
Console.WriteLine(string.Join(", ", numbers));
// Output:
// 10, 20, 30

Dizi örneği oluşturmak ve bunu tek bir deyimdeki öğelerle doldurmak için dizi başlatma söz dizimini kullanın. Aşağıdaki örnekte bunu nasıl yapabileceğiniz çeşitli yollar gösterilmektedir:

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.

Anonim türlerin örneğini oluşturma

Anonim bir türün örneğini oluşturmak için işleç ve nesne başlatıcı söz dizimini new kullanın:

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

Tür örneklerinin yok edilmesi

Daha önce oluşturulmuş tür örneklerini yok etmek zorunda değilsiniz. Hem başvuru hem de değer türlerinin örnekleri otomatik olarak yok edilir. Değer türlerinin örnekleri, bunları içeren bağlam yok edilir edilmez yok edilir. Başvuru türlerinin örnekleri, son başvuru kaldırıldıktan sonra belirtilmeyen bir zamanda çöp toplayıcı tarafından yok edilir.

Yönetilmeyen kaynaklar (örneğin, bir dosya tanıtıcısı) içeren tür örnekleri için, içerdikleri kaynakların en kısa sürede kullanıma sunulduğundan emin olmak için belirlenimci temizlemenin kullanılması önerilir. Daha fazla bilgi için API başvurusuna ve using deyimi makalesine bakınSystem.IDisposable.

İşleç aşırı yüklenebilirliği

Kullanıcı tanımlı bir tür işleci aşırı yükleyemez new .

C# dili belirtimi

Daha fazla bilgi için C# dil belirtiminin yeni işleç bölümüne bakın.

Hedef türündeki new ifade hakkında daha fazla bilgi için özellik teklifi notu'na bakın.

Ayrıca bkz.