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 System.IDisposable ve deyim makalesine using
bakın.
İş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.