.NET 9.0'da yeni [9]: Dizinin dizin operatörü ile başlatılması C# 13.0

Adanali

Member
Şimdiye kadar, endeksleyicilerle bir dizi olarak miktarın başlatılması × = y başlangıç. C# 13.0'da, dizinin sondan dizinle başlatılması da var. [^x] = y Dizin operatörü ile mümkün ^C# 8.0'dan dolaşımdadır.


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üşleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi ile Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.







Bununla birlikte, yeni sözdizimi yalnızca nesnenin başlatılması ile, diğer tahsislerle değil.

Aşağıdaki kodun örneği, nesnenin miktarının ön tarafta dizinle başlatılmasını göstermektedir. × Ve sonunda [^x]:


namespace NET9_Console.CS13;

internal class CS13_Indexer
{

class ZahlenGenerator
{
public string[] Ziffern = new string[10];
}

/// <summary>
/// C# 13.0: Objekt-Initialisierung mit Index vom Ende [^x] ("Implicit Indexer Access in Object Initializers")
/// </summary>
public void Run()
{
CUI.Demo(nameof(CS13_Indexer));

CUI.H2("Array-Initialisierung mit Indexer von vorne nach hinten");
var dAlt = new ZahlenGenerator()
{
Ziffern = {
[0] = "null",
[1] = "eins",
[2] = "zwei",
[3] = "drei",
[4] = "vier",
[5] = "fünf",
[6] = "sechs",
[7] = "sieben",
[8] = "acht",
[9] = "neun",
}
};

foreach (var z in dAlt.Ziffern)
{
Console.WriteLine(z);
}

CUI.H2("NEU: Array-Initialisierung mit Indexer von hinten nach vorne");
var dNeu = new ZahlenGenerator()
{
Ziffern = {
[^1] = "neun",
[^2] = "acht",
[^3] = "sieben",
[^4] = "sechs",
[^5] = "fünf",
[^6] = "vier",
[^7] = "drei",
[^8] = "zwei",
[^9] = "eins",
[^10] = "null"
}
};
foreach (var z in dNeu.Ziffern)
{
Console.WriteLine(z);
}

CUI.H2("NEU: Array-Initialisierung mit Indexer in beide Richtungen");
var dNeu2 = new ZahlenGenerator()
{
Ziffern = {
[^1] = "neun",
[^2] = "acht",
[^3] = "sieben",
[^4] = "sechs",
[^5] = "fünf",
[4] = "vier",
[3] = "drei",
[2] = "zwei",
[1] = "eins",
[0] = "null"
}
};

foreach (var z in dNeu2.Ziffern)
{
Console.WriteLine(z);
}

CUI.H2("NEU: Array-Befüllung zu einem späteren Zeitpunkt");

// erstelle ein Array von int mit 10 Elementen
int[] array1 = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

// das geht nicht, Syntax nur bei Objektinitialisierung im Rahmen der Instanziierung erlaubt
//array1 = {
// [^1] = 9,
// [^2] = 8,
// [^3] = 7,
// [^4] = 6,
// [^5] = 5,
// [0] = 0,
// [1] = 1,
// [2] = 2,
// [3] = 3,
// [4] = 4
// }

// hier geht nur das:
array1[^1] = 9;
array1[^2] = 8;
array1[^3] = 7;
array1[^4] = 6;
array1[^5] = 5;
array1[0] = 0;
array1[1] = 1;
array1[2] = 2;
array1[3] = 3;
array1[4] = 4;

foreach (var item in array1)
{
CUI.LI(item);
}
}
}




(RME)
 
Üst