SORU
17 Mart 2009, Salı


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
17 Mart 2009, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • colacas

    colacas

    29 EKİM 2006
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006
  • parlophone

    parlophone

    28 ŞUBAT 2006