2008-11-06 46 views
13

Artık alanlara (örneğin, ints, structs ve benzeri) başlatılması için .NET'e gerçekten ve gerçekten güvenebilir miyim? Ve eğer hala bu alanları başlatabilirsem - sonuç ne olabilir?Varsayılan değer sıfırlama alanı

+0

bu etiketli 'resharper' olduğunu Tamberg? – developerbmw

+1

@developerbmw - reSharper bu şeyden uyardığı için bu * ile yeniden etiketlendi * [link] (https://confluence.jetbrains.com/display/ReSharper/Redundant+field+initializer) –

+0

Teşekkürler @WaiHaLee – developerbmw

cevap

18

C# specification durumları (17.4.4)

bir alanın başlangıç ​​değeri, statik bir saha veya bir örneği alanı olsun, varsayılan değerdir (§12.2) arasında alanın türü. Bu varsayılan başlatma gerçekleşmeden önce bir alanın değerini gözlemlemek mümkün değildir, ve bir alan asla “başlatılmamış” değildir.

Selamlar, Neden yeryüzünde

12

Evet, gerçekten varsayılan değerlere alanları başlatmak için .NET'e güvenebilirsiniz. Temel olarak, bunu açıkça yapmak için bir yankı yoktur. (Burada küçük bir uyarı: eğer statik alanları açıkça başlatırsanız, tür başlatıcıyı yansıtma yoluyla ikinci kez çalıştıran herkes bu alanları yeniden başlatır. Bu, gerçek bir köşe durumudur!)

Ne yaparsanız yapın özel kod tabanındaki çoğu okunabilirlik. p.305 üzerinde