Demetler, bir sınıf veya yapı bildirmeden yapılandırılmış ve yazılan bilgileri ilişkilendirmek için kullanılır. Bunları birbirinin içine yerleştirebilirsiniz.
Demetler C# 7.0’da yenidir ve C# 7.1’de geliştirilmiştir. Bir sınıf veya yapı bildirmeden yapılandırılmış ve yazılan bilgi parçalarını birbirine bağlamak için kullanılırlar. Bir yöntemin birden çok değer döndürmesi gerektiğinde özellikle yararlıdırlar. Demetler kullanmaktan daha zariftir dışarı-Değişkenler.
Dün Dortmund’da C# 7.x ve Visual Studio 2017 ile ilgili kullanıcı grubu sunumumda, demetlerin de demetler içinde yuvalanıp yuvalanamayacağı sorusu ortaya çıktı. Cevap Evet.
İlk örnek, oluşturulması, kullanılması ve yapısökümüyle birlikte basit bir iç içe olmayan demet gösterir:
var dozent6 = (ID: 1, Name: "Holger Schwichtenberg", DOTNETExperte: true);
Console.WriteLine(dozent6.ID + " heißt " + dozent6.Name + ".");
// Dekonstruction eines Tupel (in einzelne Variable!)
(int ID1, string Name1, bool DOTNETExperte1) = dozent6;
Console.WriteLine(ID1);
Console.WriteLine(Name1);
Console.WriteLine(DOTNETExperte1);
İkinci örnekte, demet başka bir demet içerir.
// Tupel in Tupel (zwei Ebenen)
var dozent7 = (ID: 1, Name: "Holger Schwichtenberg", DOTNETExperte: true, Dozentendetails: (Ort: "Essen", Firma: "www.IT-Visions.de"));
Console.WriteLine("Der Dozent " + dozent7.Name + " arbeitet bei " + dozent7.Dozentendetails.Firma + ".");
// Dekonstruktion eines Tupels im Tupel inkl. Discard
var (ID7, Name7, _, (Ort7, Firma7)) = dozent7;
Console.WriteLine("Der Dozent " + Name7 + " arbeitet bei " + Firma7 + ".");
üçüncü örnek, üç seviyeli demetler kullanır. Kafa karıştırıcı hale geldiğinden, herkes kendisi için karar vermek zorunda
// Tupel in Tupel (drei Ebenen)
var dozent8 = (ID: 1, Name: "Holger Schwichtenberg", DOTNETExperte: true, Dozentendetails: (Firmensitz: (Stadt: "Essen", PLZ: 45257), Firma: "www.IT-Visions.de"));
Console.WriteLine("Der Dozent " + dozent7.Name + " arbeitet bei " + dozent7.Dozentendetails.Firma + " in " + dozent8.Dozentendetails.Firmensitz.Stadt);
// Dekonstruktion über drei Ebenen inkl. Discard
var (ID8, Name8, _, ( (Ort8, _), Firma8)) = dozent8;
Console.WriteLine("Der Dozent " + Name8 + " arbeitet bei " + Firma8 + " in " + Ort8);
()
Haberin Sonu
Demetler C# 7.0’da yenidir ve C# 7.1’de geliştirilmiştir. Bir sınıf veya yapı bildirmeden yapılandırılmış ve yazılan bilgi parçalarını birbirine bağlamak için kullanılırlar. Bir yöntemin birden çok değer döndürmesi gerektiğinde özellikle yararlıdırlar. Demetler kullanmaktan daha zariftir dışarı-Değişkenler.
Dün Dortmund’da C# 7.x ve Visual Studio 2017 ile ilgili kullanıcı grubu sunumumda, demetlerin de demetler içinde yuvalanıp yuvalanamayacağı sorusu ortaya çıktı. Cevap Evet.
İlk örnek, oluşturulması, kullanılması ve yapısökümüyle birlikte basit bir iç içe olmayan demet gösterir:
var dozent6 = (ID: 1, Name: "Holger Schwichtenberg", DOTNETExperte: true);
Console.WriteLine(dozent6.ID + " heißt " + dozent6.Name + ".");
// Dekonstruction eines Tupel (in einzelne Variable!)
(int ID1, string Name1, bool DOTNETExperte1) = dozent6;
Console.WriteLine(ID1);
Console.WriteLine(Name1);
Console.WriteLine(DOTNETExperte1);
İkinci örnekte, demet başka bir demet içerir.
// Tupel in Tupel (zwei Ebenen)
var dozent7 = (ID: 1, Name: "Holger Schwichtenberg", DOTNETExperte: true, Dozentendetails: (Ort: "Essen", Firma: "www.IT-Visions.de"));
Console.WriteLine("Der Dozent " + dozent7.Name + " arbeitet bei " + dozent7.Dozentendetails.Firma + ".");
// Dekonstruktion eines Tupels im Tupel inkl. Discard
var (ID7, Name7, _, (Ort7, Firma7)) = dozent7;
Console.WriteLine("Der Dozent " + Name7 + " arbeitet bei " + Firma7 + ".");
üçüncü örnek, üç seviyeli demetler kullanır. Kafa karıştırıcı hale geldiğinden, herkes kendisi için karar vermek zorunda
// Tupel in Tupel (drei Ebenen)
var dozent8 = (ID: 1, Name: "Holger Schwichtenberg", DOTNETExperte: true, Dozentendetails: (Firmensitz: (Stadt: "Essen", PLZ: 45257), Firma: "www.IT-Visions.de"));
Console.WriteLine("Der Dozent " + dozent7.Name + " arbeitet bei " + dozent7.Dozentendetails.Firma + " in " + dozent8.Dozentendetails.Firmensitz.Stadt);
// Dekonstruktion über drei Ebenen inkl. Discard
var (ID8, Name8, _, ( (Ort8, _), Firma8)) = dozent8;
Console.WriteLine("Der Dozent " + Name8 + " arbeitet bei " + Firma8 + " in " + Ort8);
()
Haberin Sonu