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
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ı?
Neden Apple ARK altında singleton dese...
Açısal JS: Nasıl ng-click bir yol aram...
Neden Google'EĞER bir WordPress k...
Neden prototip kurucu ayarlamak için g...
Neden't bir yapı için varsayılan ...