2016-03-29 24 views
-1

Aşağıdaki kodlar için, bir bedeni olmayan "özel kümeyi" eklememin sebebi, bu sınıfın dışında değişmez hale getirmektir. resharper bana anlatmaya devam "" değer" parametresi kullanılmaz '', ne bu, lütfen demektir?"" value "parametresi ne işe yaramıyor" ayarlayıcıda ortalama lütfen?

public string ErrorCode 
    { 
     get 
     { 
      if (!this.request.Completed) 
      { 
       return "Incomplete"; 
      } 
      return this.request.Error.ToString(); 
     } 

     private set 
     { 
     } 
    } 
+0

Ana hakkında sonuç: https://confluence.jetbrains.com/display/ReSharper/'value'+parameter+is+not+used – user3114639

+0

var grubu yöntemi için bir örtülü 'value' parametredir ve onunla hiçbir şey yapmıyorsun. Belirlenen yöntemin özel olması, onu sınıfın dışında değişmez kılar, bedene sahip olmama gerçeği, aslında sınıfın içinden de değişmez olduğu anlamına gelir (çünkü içeri girilen değeri kullanmazsınız). Ya hiç ayarlanmış bir yöntem kullanmamalısınız ya da nesneyi gerçekten güncelleştirmek için değeri kullanmalısınız –

cevap

2

sen de value anahtar kelime faydalanmak gerekir sonra bir ayarlayıcı kullanmak gidiyoruz. o zaman sadece private-set maddesini kaldırmak olabilir salt okunur ErrorCode özelliğini yapım bir ayarlayıcı istemiyorsanız. aksi Bunu önlemek için hiçbir yolu yoktur. Aşağıdaki durumlarda

public string ErrorCode 
    { 
     get 
     { 
      if (!this.request.Completed) 
      { 
       return "Incomplete"; 
      } 
      return this.request.Error.ToString(); 
     } 

     private set 
     { 
      _globalVar = value; 
     } 
    } 
+0

Thx. Yani temelde bir dünya değişkeni eklemem gerekiyor. – Sam003

+1

@ Sam003 Doğru. Daha karmaşık bir özellik yazacaksanız, başka bir değişkeni değiştirmeniz gerekir. Davanız için bir kamu yöntemi kullanmak için daha iyi olabilir. – Tdorno

2

sen setter gibi bir otomatik olamaz Uygulanan get: Birkaç seçeneğiniz var:

1.Kurtarma ünitesini hep birlikte kaldırın, böylece sadece mülkiyeti elde edersiniz. Özel alanı doğrudan sınıf seviyesinden değiştirebilirsiniz. Tavsiye edilmez

  1. Setter'da minimum uygulama sağlayın: _yourPrivateField = value; Tembel ama yapacak. Bazı validasyon ile ayarlayıcı sağlayın - her zaman tercih edilir.

İlgili konular