2013-05-25 19 views
10

C# öğreniyorum ve sınıf için özel alanlar oluşturma hakkında bilgi edinin ve Yöntemler ve Setters kullanarak, alan değerleri yerine Yöntemleri görüntülemek için kullanın. Shorthand Accessors and Mutators

get; set; yöntem ve Yöntem 2 eşdeğer mı? Örneğin. diğerinin kısaltması mı? Örneğin alma veya bir değer ayarlamadan önce bir hesaplama yapmak istediğinizde Nihayet
class Student 
{ 
    // Instance fields 
    private string name; 
    private int mark; 

    // Method 1 
    public string Name { get; set; } 

    // Method 2 
    public int Mark 
    { 
     get { return mark; } 
     set { mark = value; } 
    } 
} 

, Yöntem 2 kullanılacak? Örneğin. değeri bir yüzdeye dönüştürmek veya doğrulama yapmak mı? Örneğin.

class Student 
{ 
    // Instance fields 
    private string name; 
    private double mark; 
    private int maxMark = 50; 

    // Method 1 
    public string Name { get; set; } 

    // Method 2 
    public double Mark 
    { 
     get { return mark; } 
     set { if (mark <= maxMark) mark = value/maxMark * 100; } 
    } 
} 
+0

[bu yanıt] 'a bir göz atın (http://stackoverflow.com/questions/15454470/why-arent-simple-properties-optimized-to-fields/15454538#15454538); ayrıntılı bir şey gösterir. –

+0

[C# içinde Otomatik Özellikler nedir ve amaçları nedir?] 'Nin olası bir kopyası (http://stackoverflow.com/questions/6001917/what-are-automatic-properties-in-c-sharp-and-what-is -their-amacı) –

cevap

8

Evet, Yöntem 1 ı varsayılan olarak Yöntem 1 kullanmanızı öneririz yöntem 2'ye bir kısa yoldur. Daha fazla işlevsellik gerektiğinde, Yöntem 2'yi kullanın. Ayrıca, get ve set için farklı erişim değiştiricileri de belirtebilirsiniz.

+1

Aah, yani 'korumalı set {if (işaret <= maxMark) işareti = değer/maxMark * 100; } '??? – Gravy

+0

Evet, bu doğru. – Robin

+2

Ad alıcı/ayarlayıcı, özel dize adını döndürmeyecek/ayarlamayacak, ancak doğrudan erişime sahip olmadığınız bir iç değişkeni unutmayın. – Bikonja

7

Evet, Method2, özel bir alıcı ve ayarlayıcı işleviniz olduğunda gidilecek yoldur. Yöntem1'i kullandığınızda, varsayılan olarak, dahili olarak ele alınan bir varsayılan özel özellik olacaktır. Daha fazla bilgi için lütfen URL'a bakın