.NET 8.0'da yeni [8]: C# 12.0 adlı adı () için iyileştirmeler

Womanne

Member
Operatör yakın zamanda C# 6.0'da tanıtıldı nameof() Bir tanımlayıcının adını bir karakter zinciri olarak sağlar (yalnızca çok sınırlı adların son kısmı). Bu operatör, sağlamlığı artırır ve bir sınıfın veya sınıfın bir üyesinin bir dize olarak teslim edilmesi gereken durumlarda yeniden düzenlemeyi kolaylaştırır.








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.







Operatör nameof() Ancak bazı durumlarda C# 12.0'dan önce çalışmadı. Bazı durumlarda, C# 12.0'dan önce sınıf üyelerinin (statik üyeler, ek açıklamalar) uygulama üyelerinin adına erişmek mümkün değildi. Microsoft, bu durumlarda C# 12.0 uygulama alanını genişletmiştir.


// nameof(Name.Length) nicht möglich vor C# 12.0!
[Description($"{nameof(StringLength)} liefert von {nameof(Name)} die Eigenschaft {nameof(Name.Length)}")]
public struct Person
{
public string Name;
// bisher schon möglich:
public string MemberName1() => nameof(Name);
// bisher schon möglich:
public string MemberName2() => nameof(Name.Length);
// bisher schon möglich:
public static string MemberName3() => nameof(Name);
// bisher Fehler CS0120, da statisches Mitglied versucht
// auf Mitglied von Mitglied zuzugreifen
public static string MemberName4() => nameof(Name.Length);

// nameof(Name.Length) war nicht möglich vor C# 12.0!
[Description($"{nameof(StringLength)} liefert von {nameof(Name)} die Eigenschaft {nameof(Name.Length)}")]

public int StringLength()
{
return Name.Length;
}

public void PrintMemberInfo()
{
Console.WriteLine($"Die Struktur {nameof(Person)} hat ein "+
"Mitglied{nameof(Name)}, welches eine " +
"Eigenschaft {nameof(Name.Length)} besitzt!");
}
}



Burada C# 12.0'dan önceki ifade olurdu nameof(Name.Length) Yukarıda gösterilen altı vakanın üçünde mümkün değildi ve derleyici tarafından “CS0120 hatası hatası: nesnenin referansında alan, yöntem veya statik olmayan özellik” isteği var. Aşağıdaki ekran görüntüsü, C# 12.0'dan önce mümkün olmayan kırmızı çizgileri gösteriyor:







C# 12.0'dan önce NameOf () 'dan hiçbir uygulama yoktur.


(Resim: Ekran görüntüsü (Holger Schwichtenberg tarafından))




(RME)
 
Üst