2008-11-06 13 views
13

Czy mogę naprawdę i naprawdę zaufać .NET do inicjowania pól (takich jak int, structs i tym podobne)? A co jeśli nadal chcę zainicjować te pola - jakie mogą być reperkusje?Inicjowanie domyślnej wartości pola jest zbędne

+0

Dlaczego na ziemi jest to oznaczone 'resharper'? – developerbmw

+1

@developerbmw - ten * został * oznaczony jako resharper, ponieważ ReSharper ostrzega o tym: [link] (https://confluence.jetbrains.com/display/ReSharper/Redundant+field+initializer) –

+0

Dzięki @WaiHaLee – developerbmw

Odpowiedz

18

W C# specification stany na p.305 (17.4.4)

Wartość początkowa polu, czy to statyczne pole lub pola instancja, to wartość domyślna (§12.2) z typ pola. Nie można zaobserwować wartości pola przed zaistnieniem tej domyślnej inicjalizacji, a zatem pole nie jest nigdy "niezainicjalizowane".

Pozdrawiam, tamberg

12

Tak, można naprawdę zaufać .NET, aby zainicjować pola do ich wartości domyślnych. Zasadniczo nie ma żadnych reperkusji, aby zrobić to wyraźnie. (Jedno małe zastrzeżenie: jeśli zainicjalizujesz pola statyczne jawnie, to każdy, kto uruchomi inicjalizator typu po raz drugi za pomocą odbicia, będzie musiał ponownie zainicjować te pola.) Jest to prawdziwa narożna sprawa!). większa czytelność w Twojej bazie kodu.

Powiązane problemy