Anladığım kadarıyla { get; set; }
, @Klaus ve @Brandon gibi "destek alanı" olan bir özellik yazmak için kısayol olduğu gibi bir "otomatik özellik" olduğunu. Yani bu durumda:
public class Genre
{
private string name; // This is the backing field
public string Name // This is your property
{
get => name;
set => name = value;
}
}
Ancak benim gibiyseniz - yaklaşık bir saat kadar önce - hangi özelliklerin ve erişimcilerin gerçekte olduğunu anlamıyorsunuz ve bazı temel terminolojileri de en iyi şekilde anlayamıyorsunuz. MSDN böyle şeyler öğrenmek için harika bir araçtır, ancak yeni başlayanlar için anlaşılması her zaman kolay değildir. Bu yüzden burada daha ayrıntılı olarak açıklamaya çalışacağım.
get
ve set
olan erişimcileri erişim veri ve bilgi için they mümkün anlamına özel (genellikle bir ila alanları destek alanında ) ve genellikle gelen bunu kamu özellikleri (yukarıdaki örnekte görebileceğiniz gibi).
Yukarıdaki ifadenin oldukça kafa karıştırıcı olduğunu inkar etmek yok, bu yüzden bazı örneklere bakalım. Diyelim ki bu kod müzik türlerine atıfta bulunuyor. Yani Tarz sınıfı içinde farklı müzik türleri isteyeceğiz. Diyelim ki 3 türümüz var: Hip Hop, Rock ve Country. Bunu yapmak için , sınıfın yeni örneklerini oluşturmak üzere Sınıf adını kullanırız .
Genre g1 = new Genre(); //Here we're creating a new instance of the class "Genre"
//called g1. We'll create as many as we need (3)
Genre g2 = new Genre();
Genre g3 = new Genre();
//Note the () following new Genre. I believe that's essential since we're creating a
//new instance of a class (Like I said, I'm a beginner so I can't tell you exactly why
//it's there but I do know it's essential)
Artık Tür sınıfının örneklerini oluşturduğumuza göre, tür adlarını yukarıda ayarlanan 'Ad' özelliğini kullanarak ayarlayabiliriz.
public string Name //Again, this is the 'Name' property
{ get; set; } //And this is the shorthand version the process we're doing right now
Aşağıdakileri yazarak 'g1' adını Hip Hop olarak belirleyebiliriz
g1.Name = "Hip Hop";
Burada olanlar biraz karmaşık. Sanki daha önce adı geçen, get
ve set
aksi takdirde erişmek mümkün olmaz o özel alanlardan erişim bilgileri. get
yalnızca o özel alandaki bilgileri okuyabilir ve geri gönderebilir . set
yalnızca o özel alana bilgi yazabilir . Ancak her iki ile bir özellik sağlayarak get
ve set
biz yapabiliyoruz bu işlevlerin her ikisini birden yapın. Ve yazarak g1.Name = "Hip Hop";
özellikle set
Name özelliğimizdeki işlevi kullanıyoruz
set
adlı örtük bir değişken kullanır value
. Temel olarak bunun anlamı, içinde "değer" gördüğünüz her seferinde set
bir değişken anlamına gelir; "değer" değişkeni. Yazdığımızda , bu durumda olan değişkeni geçmek g1.Name =
için kullanıyoruz . Yani aslında şöyle düşünebilirsiniz:=
value
"Hip Hop"
public class g1 //We've created an instance of the Genre Class called "g1"
{
private string name;
public string Name
{
get => name;
set => name = "Hip Hop"; //instead of 'value', "Hip Hop" is written because
//'value' in 'g1' was set to "Hip Hop" by previously
//writing 'g1.Name = "Hip Hop"'
}
}
Yukarıdaki örneğin gerçekte kodda yazılmadığına dikkat etmek önemlidir. Daha çok arka planda neler olduğunu gösteren varsayımsal bir kod.
Şimdi biz ettik set arasında g1 örneğinin Adı Türe , sanırım inanıyorum olsun yazılı tarafından isim
console.WriteLine (g1.Name); //This uses the 'get' function from our 'Name' Property
//and returns the field 'name' which we just set to
//"Hip Hop"
ve bunu çalıştırırsak "Hip Hop"
konsolumuza gireriz.
Bu açıklama amacıyla örneği çıktılarla da tamamlayacağım
using System;
public class Genre
{
public string Name { get; set; }
}
public class MainClass
{
public static void Main()
{
Genre g1 = new Genre();
Genre g2 = new Genre();
Genre g3 = new Genre();
g1.Name = "Hip Hop";
g2.Name = "Rock";
g3.Name = "Country";
Console.WriteLine ("Genres: {0}, {1}, {2}", g1.Name, g2.Name, g3.Name);
}
}
Çıktı:
"Genres: Hip Hop, Rock, Country"