C Emlak ve Alan arasında fark# 3.0
What is the difference between a field and a property in C#? kopyası gibi görünüyor farkındayım ama benim sorum küçük bir fark (benim açımdan)
Şimdi C# 3.0 ' ın böyle bir özelliği ifade edebilirim:
public string MyString { get; set; }
derleyici özel alan oluşturma gibi bir şey mi olduğunu düşünürsek (AFAIK) yukarıdaki bildirimi arasındaki fark nedir:
public string myString;
?
Edit: Herhalde ne demek istediğimi çok iyi açıklamadı.
"Sadece özellikleri çalışır teknikleri" ve doğrulama ihtiyacı ve kamu/set almak kullanmak istemiyorum . benim sınıf kullanmak istemiyorum biliyorum bir kez
herhangi bir fark (gelecekteki gelişimi olanlar/stil hariç) belirleme gibi kontrol çeşit özelliği var mı ?
CEVAP
Alanları ve özellikleri aynı görünüyor, ama değil. Özellikler ve alanlar halinde özelliklere sahip ama asla gerçekleşmeyecek bir şey için desteklenmeyen bazı şeyler vardır, ve gibi yöntemleri vardır.
İşte farklılıkları bir listesi:
- Alanları
out/ref
bağımsız giriş olarak kullanılabilir. Özellikleri olamaz. - Bir alan her zaman birden çok kez, birden çok iş parçacığı ile ilgili sorunlar bırakırsak () çağrıldığında, aynı sonucu verir.
DateTime.Now
gibi bir özellik değil, her zaman kendisine eşittir. - Özellikler özel durumlar - alanlar bunu asla yapmaz atabilir.
- Özellikleri yan etkileri olabilir ya da gerçekten uzun bir süre yürütmek için. Alanları hiçbir yan etkileri vardır ve her zaman beklendiği gibi hızlı verilen türü için olacak.
- Özellikleri/belirleyiciler alanları olmayan alıcılar için farklı erişilebilirlik (ama alanlar
readonly
yapılabilir) desteği - Yansıma kullanırken özellikleri ve alanları farklı (
GetFields
vs örneğin 9**) sahiptir, böylece farklı 7 ** kabul edilir - JİT Derleyici özelliğine erişmek çok farklı bir alan erişim göre davran. Ancak aynı yerel kod derleme aşağı olabilir ama fark için kapsamı vardır.
Seçmek arasında fark ve Farklı Benzers...
Ne fark var arasında #include <file...
Fark devlet arasında dolar.() transiti...
fark ve Scala arasında foldLeft reduce...
İki liste - ' =' uzatmak ara...