2008-11-06 18 views
13

¿Puedo real y verdaderamente .NET confianza para inicializar los campos (como enteros, estructuras y similares)? ¿Y qué sucede si aún quiero inicializar esos campos? ¿Cuáles podrían ser las repercusiones?campo Inicialización por valor por defecto es redundante

+0

¿Por qué en la tierra es este etiquetado 'resharper'? – developerbmw

+1

@developerbmw - esto era * * etiquetados con ReSharper porque ReSharper advierte de esto mismo: [link] (https://confluence.jetbrains.com/display/ReSharper/Redundant+field+initializer) –

+0

Gracias @WaiHaLee – developerbmw

Respuesta

18

Los C# specification estados en p.305 (17.4.4)

El valor inicial de un campo, ya sea un campo estático o un campo de instancia, es el valor por defecto (§12.2) de la tipo de campo. No es posible observar el valor de un campo antes de esta inicialización por defecto se ha producido, y por lo tanto un campo nunca es “sin inicializar”.

Saludos, Tamberg

12

Sí, realmente se puede confiar en .NET para inicializar los campos a sus valores por defecto. Básicamente no hay repercusiones para hacerlo de manera explícita. (Una pequeña advertencia aquí: si inicializa los campos estáticos explícitamente, cualquiera que ejecute el inicializador de tipo por segunda vez a través de la reflexión terminará reinicializando esos campos. Sin embargo, este es un caso de esquina real)

Haga lo que promueva la mayoría de la legibilidad en su código base particular.

Cuestiones relacionadas