.NET 8.0’daki yenilikler [4]: C# 12.0’daki koleksiyon ifadeleri

C# 12.0’daki çok ilginç bir yenilik, küme başlatmaya yönelik basitleştirilmiş sözdizimidir. Microsoft başlangıçta bu dil özelliğine Koleksiyon Değişmezleri adını verdi, ancak şimdi Koleksiyon İfadeleri adını verdi.

Duyuru

Dr. Holger Schwichtenberg, son derece kritik güvenlikle ilgili alanlar da dahil olmak üzere yenilik ve deneyime dayalı yazılım geliştirme sunan MAXIMAGO’da baş teknoloji uzmanıdır. Aynı zamanda, 43 tanınmış uzmanla yazılım geliştirme ve kullanımı konusunda danışmanlık ve eğitim vererek çok sayıda orta ve büyük şirketi destekleyen www.IT-Visions.de uzman ağını da yönetmektedir.

Bu yeni sözdizimi ile, daha önce çok heterojen olan nesne kümesi başlatma biçimlerini JavaScript tarzında, yani köşeli parantez içindeki değerlerle, virgülle ayrılmış olarak önemli ölçüde birleştirmek mümkündür:

Önceki başlatma

Artık mümkün

int[] a = yeni uzantı[3] {1, 2, 3};

int[] bir = [1,2,3];

Açıklık b = yığınsalloc[] {1, 2, 3};

Açıklık b = [1,2,3];

Değişmez Dizi c = ImmutableArray.Create(1, 2, 3);

Değişmez Dizi c = [1,2,3];

Liste d = yeni() { 1, 2, 3 };

Liste d = [1,2,3];

Liste e = yeni Liste() { 1, 2, 3 };

Liste ve = [1, 2, 3];

ISayılandırılabilir f = yeni Liste() { 1, 2, 3 };

ISayılandırılabilir f = [1,2,3];

Ancak ReadOnlyArray türünde bir nesne oluşturulur!

Köşeli parantez içeren sözdizimi yalnızca ilk başlatma için değil aynı zamanda sonraki atamalar için 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ünü kullanma .. Başlatma işleminin bir parçası olarak kümeleri diğer kümelere entegre edebilirsiniz. Yayılma operatörü, basit bir listenin iç içe geçmemesini sağlar:

// 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 sitesiyle pek çok şey yaratıldı çünkü değişkenlerdeki yediye ek olarak sites1, sites2 VE sites3 Dahil edilen sitelere bir web sitesi daha eklendi.

Önceki listenin çıktısı

(Resim: ekran görüntüsü / Holger Schwichtenberg)

Sözlük nesneleri için koleksiyon ifadeleri şu anda mümkün değildir (C# 12.0’dan beri). Bunlarla (C# 12.0’dan önce olduğu gibi) iç içe küme parantezleri kullanarak başlatmayı kullanabilir veya küme parantezleri içinde ad-değer ataması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"
  };


(kendim)

Haberin Sonu

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir