.NET 9.0'da yeni [8]: Mengen jenerik türleri c# çeşitli parametrelerde

C# 'nın ilk sürümünden, SO -Called çeşitli parametreler için bir dizi parametre dizisi olmuştur (bkz. Wikipedia'nın çeşitli işlevlere eklenmesi), bir yöntemle alınabilirse, bir tür parametrelerin uzun bir listesini alabilir Anahtar kelime params Başladı.

Duyuru

Holger Schwichtenberg, 53 ünlü uzmanla, danışmanlık ve eğitim ve yazılımın geliştirilmesinde çok sayıda orta ölçekli 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.

Aşağıdaki kod, dizili çeşitli parametrenin önceki varyantını gösterir:

public void MethodeMitBeliebigVielenParametern_Alt(string text, 
                                                 params int[] args)
{
 CUI.H2(nameof(MethodeMitBeliebigVielenParametern_Alt));
 CUI.Print(text + ": " + args.Length);
 foreach (var item in args)
 {
  CUI.LI(item);
 }
}

Örneğin, yöntem aşağıdaki gibi hatırlanabilir:

MethodeMitbeliebigVielenParametern_Alt("Anzahl Zahlen", 1, 2, 3);
MethodeMitbeliebigVielenParametern_Alt("Number of numbers",
                                       1, 2, 3, 4);

C# 13.0'da yeni, çeşitli parametrelerdeki bir dizi yerine, jenerik mengen türlerini (sözde parametre koleksiyonları) kullanmak da mümkündür params Span<T>:

public void MethodeMitBeliebigVielenParametern_Neu(string text,
                                                   params Span<int> args)
{
 CUI.H2(nameof(MethodeMitBeliebigVielenParametern_Neu));
 CUI.Print(text + ": " + args.Length);  // statt args.Length
 foreach (var item in args)
 {
  CUI.LI(item);
 }
}

Aynı şekilde, çağrı parametrelerin ankrajında ​​olduğu gibi esnektir:

MethodeMitBeliebigVielenParametern_Neu("Anzahl Zahlen", 1, 2, 3);
MethodeMitBeliebigVielenParametern_Neu("Number of numbers", 
                                       1, 2, 3, 4);

Bu nedenle, bu tür genel miktarlar bir params C# 13.0'da izin verildi:

  • Collections.Generic.IEnumerable<T>
  • System.Collections.Generic.IReadOnlyCollection<T>
  • Collections.Generic.IReadOnlyList<T>
  • System.Collections.Generic.ICollection<T>
  • Collections.Generic.IList<T>
  • Tüm Sınıflar Collections.Generic.IEnumerable<T>alet
  • Span<T>
  • ReadOnlySpan<T>

Mümkünse, parametre listesine sahip olmalısınız Span<T> VEYA ReadOnlySpan<T> Parametrelerin dağıtımının tamamen yığın yoluyla gerçekleşmesi ve kazık üzerinde herhangi bir depolama tahsisi yapmanıza gerek yoktur.

Tıpkı bir dizi parametrede bitmiş bir dizi sunabileceğiniz gibi, daha sonra parametrelere dağıtılır

MethodeMitBeliebigVielenParametern_Alt(
  "Anzahl Zahlen - übergeben als Int-Array", 
  [1, 2, 3]);

Yukarıdaki yeni türlerden birini, yöntemin bir parametre koleksiyonu olması gerekiyorsa da sunabilirsiniz:

MethodeMitBeliebigVielenParametern_Neu(
  "Anzahl Zahlen - übergeben als List<int>", 
  new List<int> { 1, 2, 3 });

VEYA

MethodeMitBeliebigVielenParametern_Neu(
  "Anzahl Zahlen - übergeben als List<int>", 
  [1, 2, 3]);

Dikkat: Aşağıdaki sözdizimi çalışmıyor:

MethodeMitBeliebigVielenParametern_Neu(
  "Anzahl Zahlen - übergeben als List<int>", 
  new List<int> [1, 2, 3 ]);

Orada bu mümkün değil new List<int> [1, 2, 3 ] Üç boyutlu bir dizi List<int> oluşturuldu.


(RME)


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

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