C# 7.2'den her zaman yığın üzerinde yaşayan ve asla kazıkta geziler yapmayan yapılar var: ref struct. C# 13.0'da Microsoft, ref struct genişletildi.
Duyuru
Holger Schwichtenberg, 53 ünlü uzmanla, danışmanlık ve eğitim ve yazılımın geliştirilmesinde çok sayıda orta boy 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 tür türler şimdi olabilir:
Aşağıdaki kod türünü gösterir ref structbir arayüz uygular:
internal interface IPerson
{
int ID { get; set; }
int Name { get; set; }
}
// NEU seit C# 13.0: ref struct kann Schnittstelle implementieren
ref struct Person : IPerson
{
public int ID { get; set; }
public int Name { get; set; }
// ToString()
public override string ToString()
{
return "Person #" + ID + " " + Name;
}
}
}
class Client
{
public void Run()
{
Person p = new Person();
p.ID = 1;
p.Name = 2;
Console.WriteLine(p.ID);
Console.WriteLine(p.Name);
// Das ist alles nicht erlaubt!
// IPerson i = p; // Casting auf Schnittstelle
// List<Person> PersonList = new(); // List<T>
// PersonList[] PersonArray = new Person[10]; // Array
}
}
(RME)
Duyuru

Holger Schwichtenberg, 53 ünlü uzmanla, danışmanlık ve eğitim ve yazılımın geliştirilmesinde çok sayıda orta boy 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 tür türler şimdi olabilir:
- Arayüzleri uygulayın. Bununla birlikte, kısıtlama, derleyicinin boksu dahili olarak yapması gerektiğinden, yapının arayüz türüne dönüştürülemeyeceği anlamına gelir.
- yazım olarak kullanılabilir. Ancak, jenerik tipi veya jenerik yöntemi yapmanız gerekir where T : allows ref struct kullanmak.
- Itarers ile yield kullanılabilir. Bununla birlikte, yapı Theter'in mevcut yürütülmesinden daha uzun yaşamamalıdır.
- Eşzamansız yöntemlerle Task VEYA Task<T> teslim edin, kullanılabilir.
Aşağıdaki kod türünü gösterir ref structbir arayüz uygular:
internal interface IPerson
{
int ID { get; set; }
int Name { get; set; }
}
// NEU seit C# 13.0: ref struct kann Schnittstelle implementieren
ref struct Person : IPerson
{
public int ID { get; set; }
public int Name { get; set; }
// ToString()
public override string ToString()
{
return "Person #" + ID + " " + Name;
}
}
}
class Client
{
public void Run()
{
Person p = new Person();
p.ID = 1;
p.Name = 2;
Console.WriteLine(p.ID);
Console.WriteLine(p.Name);
// Das ist alles nicht erlaubt!
// IPerson i = p; // Casting auf Schnittstelle
// List<Person> PersonList = new(); // List<T>
// PersonList[] PersonArray = new Person[10]; // Array
}
}
(RME)