New işleci (C# Başvurusu)

İşleci, new bir türün yeni bir örneğini oluşturur.

Anahtar sözcüğünü new veya genel tür kısıtlamasıolarak da kullanabilirsiniz new .

Oluşturucu çağırma

Bir türün yeni bir örneğini oluşturmak için, genellikle işlecini kullanarak Bu türdeki oluşturuculardan birini çağırın:

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 ifadede bir nesne oluşturmak ve başlatmak için işleciyle bir nesne veya koleksiyon başlatıcısı 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

C# 9,0 ile başlayarak, Oluşturucu çağırma ifadeleri Target türünde. Diğer bir deyişle, bir ifadenin hedef türü biliniyorsa, aşağıdaki örnekte gösterildiği gibi, bir 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 ayraçları hedef türü new bir ifadede kullanırsınız.

Bir new ifadenin 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 kullanabilirsiniz 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 başlatma söz dizimini kullanarak bir dizi örneği oluşturun ve tek bir deyimdeki öğelerle doldurun. Aşağıdaki örnek, bunu nasıl yapabilmenizin çeşitli yollarını göstermektedir:

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 örneklenmesi

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

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

Tür örneklerinin yok edilmesi

Önceden oluşturulmuş tür örneklerini yok etmeniz gerekmez. Başvuru ve değer türlerinin örnekleri otomatik olarak yok edilir. Değer türlerinin örnekleri, bunları içeren bağlam yok edilir oluşturmaz yok edilir. Başvuru türlerinin örnekleri, son başvuru kaldırıldıktan sonra bazı belirtilmeyen bir zamanda çöp toplayıcı tarafından yok edilir.

Yönetilmeyen kaynakları içeren tür örneklerinde, örneğin bir dosya tanıtıcısı için, içerdikleri kaynakların mümkün olan en kısa sürede serbest bırakılacağını sağlamak üzere belirleyici Temizleme kullanılması önerilir. Daha fazla bilgi için bkz System.IDisposable . API başvurusu ve System.IDisposable makalesi.

Operatör overloadability

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

C# dili belirtimi

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

Hedef türü belirtilmiş new bir ifade hakkında daha fazla bilgi için bkz. new.

Ayrıca bkz.