.NET 8.0'da yeni [4]: C# 12.0'da toplama ifadesi

Womanne

Member
C# 12.0'dan çok güzel bir yenilik, miktarların başlatılması için basitleştirilmiş sözdizimidir. Microsoft başlangıçta gerçek dilsel özelliklerin koleksiyonunu tanımladı, ancak şimdi bir koleksiyon ifadesi.










Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.







Bu yeni sözdizimi ile, JavaScript tarzındaki nesnelerin miktarlarının, yani kare parantezler arasındaki değerlerle alıntılarla ayrılmış olan, daha önce heterojen başlatma biçimlerini güçlü bir şekilde standartlaştırmak mümkündür:


Önceki başlatma​

Şimdi de mümkün​

yakından[] A = yeni int[3] {1, 2, 3};​

yakından[] A = [1,2,3];​

Aralık B = StackAlloc[] {1, 2, 3};​

Aralık B = [1,2,3];​

İmgutablear C = immutablear.create (1, 2, 3);​

İmgutablear C = [1,2,3];​

Liste D = new () {1, 2, 3};​

Liste D = [1,2,3];​

Ilist e = yeni liste () {1, 2, 3};​

Ilist e = = [1, 2, 3];​

INEMUMEBLE F = yeni liste () {1, 2, 3};​

INEMUMEBLE F = [1,2,3];​

Ancak, bu bir ReadonlyArray nesnesi oluşturur !​

Kare parantezli sözdizimi sadece ilk başlatma ile değil, aynı zamanda sonraki tahsislerde de mümkündür:


List<string> sites1, sites2 = ["www.IT-Visions.de"], sites3;
sites1 = ["www.dotnetframework.de", "www.dotnet8.de",
"dotnet-lexikon.de", "www.dotnet-doktor.de"];
sites3 = []; // leere Liste


Difüzyon operatörü ile .. Başlatmanın bir parçası olarak diğer miktarlarda entegre edilebilir. Difüzyon operatörü, içten bir listenin gerçekleşmediğini, ancak bir düzlük olduğunu garanti eder:




// Array aus den Elementen der Arrays erstellen mit Spread Operator
string[] allSitesAsArray =
[.. sites1, .. sites2, "www.dotnettraining.de", .. sites3];
// Liste aus den Elementen der Arrays erstellen mit Spread Operator
List<string> allSitesAsList =
[.. sites1, .. sites2, "www.dotnettraining.de", .. sites3];

// Liste noch mal erweitern
allSitesAsList = [.. allSitesAsList, "powershell-schulungen.de"];

// Auflisten: 7 Sites sind nun in der Liste
foreach (var site in allSitesAsList)
{
Console.WriteLine(site);
}



Bu sekiz web sitesinde çok şey var, çünkü değişkenlerdeki yedi kişiye ek olarak sites1,, sites2 VE sites3 İçerik web siteleri başka bir web sitesine eklendi.







Önceki listenin baskısı


(Resim: ekran görüntüsü / holger schwichtenberg)



Şimdiye kadar koleksiyon ifadeleri sözlük nesneleri için mümkün olmamıştır (Stand C# 12.0). Bunlarla kullanabilirsiniz (C# 12.0'dan önce olduğu gibi), isteğe bağlı olarak belirsiz iç içe braketler kullanma veya Ricci istiridye içinde adın değerinin atanmasını kullanabilirsiniz. [Name] = Wert tamamlamak:


// Initialisierung mit Add()
SortedDictionary<int, string> dic0 = new();
dic0.Add(10, "www.dotnet-doktor.de");
dic0.Add(21, "www.dotnetframework.de");
dic0.Add(42, "www.dotnet8.de");

// Initialisierung mit geschweiften Klammern
SortedDictionary<int, string> dic1 = new() {
{ 10, "www.dotnet-doktor.de" },
{ 21, "www.dotnetframework.de" },
{ 42, "www.dotnet8.de" }
};

// Initialisierung mit geschweiften und eckigen Klammern
// (schon vor C# 12.0 möglich)
SortedDictionary<int, string> dic2 = new()
{
[10] = "www.dotnet-doktor.de",
[21] = "www.dotnetframework.de",
[42] = "www.dotnet8.de"
};




(RME)
 
Üst