SORU
7 Kasım 2008, Cuma


Bir yapı c otomatik özelliklerini kullanmak için bir neden aramak gerekli mi ()#?

Ben C bir yapı tanımlarsanız# böyle otomatik özelliklerini kullanarak:

public struct Address
{
    public Address(string line1, string line2, string city, string state, string zip)
    {
        Line1 = line1;
        Line2 = line2;
        City = city;
        State = state;
        Zip = zip;
    }

    public string Line1 { get; protected set; }
    public string Line2 { get; protected set; }
    public string City { get; protected set; }
    public string State { get; protected set; }
    public string Zip { get; protected set; }
}

Dosya oluşturma girişiminde bulunduğunuzda, bir derleme hatası The 'this' object cannot be used before all of its fields are assigned to söylediler. Bu böyle yapıcı: varsayılan zincirleme arama yapmak için yapıcı değiştirerek çözülebilir

public Address(string line1, string line2, string city, string state, string zip): this()
{
    Line1 = line1;
    Line2 = line2;
    City = city;
    State = state;
    Zip = zip;
}

Benim sorum, neden böyle oluyor, nedir? Bir tahminim var, ve IL bakarak bunu kanıtlamaya çalıştım, ama sadece IL yıkmak yapabilirsem kendimi aldatıyorum. Ama benim tahminim, otomatik özellikleri derleyici perde arkasında özellikleri için alanlar oluşturmak suretiyle bir iş. Bu alanları kod erişilemez, ayarlama ve alma özellikleri ile yapılması gerekir. Bir yapı oluştururken, varsayılan bir kurucu açıkça tanımlanamaz. Perde arkasında yani, derleyici geliştirici görmüyor alanların değerleri varsayılan bir kurucu oluşturmak olmalı.

Her türlü IL sihirbazlar veya teorimi kanıtlamak ya da çürütmek için bekliyoruz.

CEVAP
7 Kasım 2008, Cuma


C# 6, Bu gerekli değil ama kullanarak salt okunur bir otomatik uygulanan özellikler C# 6 Her neyse... . not:

this() alanları kesinlikle derleyici ile ilgili olarak atanmış olmasını sağlar - varsayılan değerlerine tüm alanları ayarlar. Sen erişim başlamadan önce tam olarak yapılmış bir yapı varherhangi birözellikleri.

Sinir bozucu, ama bu böyledir. Gerçekten bu bir yapı olsa olmak ister misin? Ve neden bir yapı korumalı bir pasör elde edilebilir. () kullanımı?

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • GUN-TIME with Brandon

    GUN-TIME wit

    3 ŞUBAT 2009
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007