Alıcılar, belirleyiciler ve özellikleri en iyi uygulamalar. Java vs C#
C alıyorum# sınıf şu an ve bir şeyler yapmanın en iyi yolu bulmaya çalışıyorum. Bir Java arka plan geldiğim ve sadece Java ile en iyi uygulamaları biliyorum; o yüzden ben# acemi!
Eğer özel bir özellik varsa Java, yapıyoruz;
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
C#, bunu yapmanın pek çok yolu olduğunu göreceksiniz.
Java gibi yapabilirim:
private string name;
public void setName(string name) {
this.name = name;
}
public string getName() {
return this.name;
}
Ya da bu ÅŸekilde yapabilirim:
private string name;
public string Name {
get { return name; }
set { name = value; }
}
Ya da:
public string Name { get; set; }
Hangisi, ve uyarılar veya inceliklerini her yaklaşımı ile ilişkisi nedir? kullanmalıyım Sınıfları oluştururken, Java (Java özellikle Etkili okuma) biliyorum bu genel en iyi uygulamaları takip ediyorum. Yani, örneğin, değişmezliğini tanıdı (sadece gerekli belirleyiciler koşuluyla) tercih ediyorum. Merak ettim nasıl bu uygulamaların uyması çeşitli yollar sağlayan belirleyiciler ve alıcılar C#; aslında, ben nereden bileyim tercüme en iyi uygulamaları Java dünyasına C#?
EDÄ°T
Jon Skeet cevabı yorum olarak bu yazıyı duruyordum ama uzun oldu:
Ne önemsiz olmayan bir özellik (önemli işleme ve doğrulama belki yani)? Hala mantığı get
set
kapsüllenmiş ile ortak bir özellik) ama bunu açığa alabilir miyim? Neden ben alıcı ve ayarlayıcı yöntemleri (ilgili işleme ve doğrulama mantığı ile) adanmış olan bu yapardı.
CEVAP
-Ön C# 6
Bu son, önemsiz bir özelliği için kullanmak istiyorum. Bu bir çağrı aldımkamuhem alıcılar ve belirleyiciler gibi ortak özelliği vardır.
Değişmezliğini tanıdı otomatik olarak uygulanan özelliklere sahip bir ağrı biraz - sadece alıcı olan otomatik bir özellik yazamazsın; elinden gelen en
public string Foo { get; private set; }
hangi değilgerçektendeğişmez... sizin sınıf dışında değişmez. Bir kullanmak isteyebilirsinizgerçeksalt okunur yerine: özellik
private readonly string foo;
public string Foo { get { return foo; } }
Kesinlikle getName()
setName()
yazmak istemiyorum.bazımantıklı yazmak için yapar durumda, özellikle eğer pahalı olabilir eğer özelliklerini kullanmak yerine Get/Set yöntemleri, ve bunu vurgulamak istiyoruz. Ancak, takip etmek istersin .NET yöntemleri için PascalCase bu adlandırma, ve bu gibi önemsiz bir özellik normal yöntemlerle neyse uygulanacak istemem - bir özelliği daha deyimsel burada.
C# 6
Yaşasın, sonunda salt okunur otomatik olarak uygulanan uygun özelliklere sahiptir:
// This can only be assigned to within the constructor
public string Foo { get; }
Aynı şekilde için salt okunur olan özellikleriyapınbazı işler yapmak gerekiyor, kullanabilirsiniz üye gövdeli özellikleri:
public double Area => height * width;
Java Android ile 7 dil özellikleri...
Java özellikleri Java dilinde mevcut d...
Java Sistem Özellikleri ve ortam değiş...
Yükleme Java paketinden özellikleri do...
Eğer maven kullanıyorsanız, genellikle...