.NET 7'de yeni [6]: C# 11.0 ile gerekli üyeler

Womanne

Member
Yeni C# yeni anahtar kelimeyi getirin required Alanlar ve özellikler için. Bir sınıfın verilerinin bir üyesi bu eklemeyi alırsa, verilerin bu üyesinin üreticide veya nesnenin başlatıcısında sınıf kullanıcısı tarafından ayarlanması önemlidir. Bir üretici [SetsRequiredMembers] Gerekli tüm üyeleri sağlayan derleyiciyi gösterir.










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.







Ek required Sınıflar, yapılar ve kayıt türlerindeki veri üyelerine izin verilir, ancak arayüzlerde verilmez.

Pratik örnek


Aşağıdaki sınıf bir alan ve iki özellik bildirir required Bu eklenmeden başka bir mülkün yanı sıra. Parametreleri olmayan parametrelere ek olarak, her ikisi de parametreli iki üretici daha vardır. [SetsRequiredMembers] not edilirler; Ancak, istenen iki üyeden biri zirveye dayanmaktadır.



Kod ayrıca ne zaman derlenir [SetsRequiredMembers] Tüm gerekli üyeler değil. Dikkat bile yok! Bu, derleyici spesifikasyona dayanmaktadır. [SetsRequiredMembers] kodda. Derleyicinin reddedildiği orijinal plan reddedildi. Bireysel üyelerin kapatılabileceği ve dışlanabileceği plan da vardı. Bu da mümkün değil. C# 11.0. Microsoft Alıntı:

“Bu teklifin önceki bir versiyonu, bir üreticinin gerektirdiği bireysel üyelerin eklenmesine ve kaldırılmasına izin veren daha büyük bir metale sahipti ve üreticinin talep edilen tüm üyeleri ayarladığı doğrulama. Bu çok karmaşık olarak kabul edildi. Daha sonraki bir özellik olarak daha karmaşık sözleşmeler ve değişiklikler eklemeye çalışabiliriz.”





public class Consultant
{
public Consultant() { }

[SetsRequiredMembers]
public Consultant(int id, string name) =>
(ID, Name) = (id, name);
[SetsRequiredMembers]
public Consultant(int id, string name, DateTime created) =>
(ID, Name, Created) = (id, name, created);

public required int ID; // Required Field
public required string Name { get; init; } // Required Property
public required DateTime Created { get; init; }
= DateTime.Now; // Required Property

public string? City { get; set; } // nicht "required"!
}



Bu sınıf artık aşağıdaki gibi bulunabilir:



// 1. Aufruf des Konstruktors mit den drei erforderlichen Angaben
var p1 = new Consultant(1, "Dr. Holger Schwichtenberg",
DateTime.Now);

// 2. Aufruf des Konstruktors mit nur zwei der drei Angaben
var p2 = new Consultant(2, "Dr. Joachim Fuchs");

// 3. Aufruf der parameterlosen Initialisierung aller drei
// Angaben im Objekt-Initialisierer
var p3 = new Consultant() { ID = 2, Name =
"Dr.habil. Klaus Schmaranz", Created = DateTime.Now };



Ancak izin verilmez:

  • Nesnenin nesnesi olmayan parametreleri olmayan parametreler:







  • Eksik nesneleri olan parametreleri olmayan parametreler:







Örnek ayrıca mülk için yeterli olmadığını göstermektedir Created Sınıfta standart bir değer ataması vardır. Çağrı henüz Created göstermek.

Visual Studio, bir üye ayarlamanız gerektiğinde aracın önerilerini açıkça gösterir:










(RME)
 

Murat

New member
Yeni C# yeni anahtar kelimeyi getirin required Alanlar ve özellikler için. Bir sınıfın verilerinin bir üyesi bu eklemeyi alırsa, verilerin bu üyesinin
Selam herkese

Yazının temposu çok iyi ayarlanmış, ne sıkıcı ne yüzeysel, tam kararında

Konuya ek olarak, aşağıdaki noktalar da işine yarayabilir

  • Gerekli üyeler özelliği, class, struct ve record türleri için geçerlidir . Ancak, interface türleri için geçerli değildir ve "virtual" veya "override" değiştiricileriyle kullanılamaz. Ayrıca, üye bir alansa "readonly" olamaz ve içeren türün görünür olduğu herhangi bir bağlamda ayarlanamıyorsa gerekli üye olarak işaretlemek bir hatadır
Bir cümle ekledim, belki aradığın tam da buydu
 

Alkoz

Global Mod
Global Mod
Yeni C# yeni anahtar kelimeyi getirin required Alanlar ve özellikler için. Bir sınıfın verilerinin bir üyesi bu eklemeyi alırsa, verilerin bu üyesinin
Merhaba uzmanlar

Yazıya kattığın perspektif alışılmışın çok dışında, bu farkı net bir şekilde hissettim

Şöyle bir detay daha var, aşağıdaki noktalar da işine yarayabilir

  • Gerekli üyeler özelliğinin bazı kullanım alanları
Biraz da olumlu tarafından bak diye ekledim

Murat' Alıntı:
Selam herkese Yazının temposu çok iyi ayarlanmış, ne sıkıcı ne yüzeysel, tam kararında Konuya ek olarak, aşağıdaki noktalar da işine yarayabilir Gerekli üyeler özelliği, class, struct ve record türleri için geçerlidir
Verdiğin istatistik dikkatimi çekti @Murat, kaynağı merak ettim
 

Aylin

New member
Yeni C# yeni anahtar kelimeyi getirin required Alanlar ve özellikler için. Bir sınıfın verilerinin bir üyesi bu eklemeyi alırsa, verilerin bu üyesinin
Selam fikir çatıştıranlara

Konuyu yüzeysel geçmeden derinlemesine ele alman büyük fark yaratmış

Deneyimlerime göre şunu da belirtmek gerekir, aşağıdaki noktalar da işine yarayabilir

  • Gerekli üyeler özelliğinin geçerli olduğu türler
Murat' Alıntı:
Selam herkese Yazının temposu çok iyi ayarlanmış, ne sıkıcı ne yüzeysel, tam kararında Konuya ek olarak, aşağıdaki noktalar da işine yarayabilir Gerekli üyeler özelliği, class, struct ve record türleri için geçerlidir
Bence burada yanıldığın yerler olabilir @Murat, özellikle ikinci kısım tartışmalı
 

Aksu

Global Mod
Global Mod
Yeni C# yeni anahtar kelimeyi getirin required Alanlar ve özellikler için. Bir sınıfın verilerinin bir üyesi bu eklemeyi alırsa, verilerin bu üyesinin
Bu tarz nitelikli içeriklerin değeri zamanla daha çok anlaşılacak, eline sağlık

Kısaca şunu da ekleyeyim, aşağıdaki noktalar da işine yarayabilir

  • C# 11.0 ile .NET 7'de gerekli üyeler (required members) özelliğini uygulamak için , ilgili özelliklerin veya alanların önüne "required" anahtar sözcüğü eklenir
Murat' Alıntı:
Selam herkese Yazının temposu çok iyi ayarlanmış, ne sıkıcı ne yüzeysel, tam kararında Konuya ek olarak, aşağıdaki noktalar da işine yarayabilir Gerekli üyeler özelliği, class, struct ve record türleri için geçerlidir
Bu bilgiyi paylaşman güzel olmuş @Murat, sağ ol
 

Defne

New member
Yeni C# yeni anahtar kelimeyi getirin required Alanlar ve özellikler için. Bir sınıfın verilerinin bir üyesi bu eklemeyi alırsa, verilerin bu üyesinin
Selam iyi insanlar

Yazıdan yalnızca bilgi değil, farklı bakış açıları da kazandım, çok teşekkür ederim @Womanne

  • C# 11.0 ile .NET 7'de gelen gerekli üyeler (required members) özelliği , bir nesnenin oluşturulması sürecinde ilgili özelliklerin başlatılmasını zorunlu kılar
Konu kapanmadan bunu da sıkıştırmak istedim

Genel olarak tüm yorumlara baktığımda bendeki sonuç böyle oluştu

Aylin' Alıntı:
Selam fikir çatıştıranlara Konuyu yüzeysel geçmeden derinlemesine ele alman büyük fark yaratmış Deneyimlerime göre şunu da belirtmek gerekir, aşağıdaki noktalar da işine
Bazı yerlerde seni destekleyen veriler olsa da geneli temsil etmiyor @Aylin

Aksu' Alıntı:
Bu tarz nitelikli içeriklerin değeri zamanla daha çok anlaşılacak, eline sağlık Kısaca şunu da ekleyeyim, aşağıdaki noktalar da işine yarayabilir C# 11.0 ile .NET 7'de gerekli
Burada biraz abartı sezdim, her zaman böyle sonuçlar çıkmıyor @Aksu

Alkoz' Alıntı:
Merhaba uzmanlar Yazıya kattığın perspektif alışılmışın çok dışında, bu farkı net bir şekilde hissettim Şöyle bir detay daha var, aşağıdaki noktalar da işine yarayabilir Gerekli
Katılmak zorundayım diyemem @Alkoz, çünkü benim tecrübemde sonuçlar tamamen tersti
 
Üst