¿Establecer variables en "nada" es una buena práctica?
Pregunta
Si tengo
Dim myRect As Rectangle = New Rectangle(0,0,100,100)
Lo es necesario o solo multa Más tarde hacer esto:
myRect = Nothing
¿O no es necesario? Gracias.
SI Es necesario, ¿hay otros casos no es para mis variables?
Solución
En general, como Dijo Joel, es innecesario.
En su ejemplo específico, sin embargo, en realidad es inútil. Rectangle
es un tipo de valor, entonces configurarlo en Nothing
no es incluso afectando el recuento de referencia de un objeto; está asignando un nuevo valor (el valor predeterminado para Rectangle
) para usted myRect
variable. Esto es análogo a tener un Integer
variable y configurarlo en 0
Al final de un método. No te compra nada.
Debo señalar que la afirmación "establece cualquier variable en Nothing
o null
en c#] nunca logra nada "* es un mito. Es completamente posible que tenga un campo en una clase a la que bien podrías establecer null
Si el objeto referenciado ya no es necesario, pero aún tiene una referencia a la instancia de clase en sí.
Como ejemplo simplista, suponga que tenía una clase de contenedor que envuelve un T[]
matriz, y le das a este contenedor un Empty
método. Puede tener sentido establecer la matriz interna del contenedor en null
En este método, que daría lugar a cero referencias al objeto de matriz, calificarlo para la recolección de basura. (Luego crearía una nueva matriz cuando el código externo intentó agregar un T
a la colección.) Si no estableció el campo en NULL ON Empty
, entonces todavía habría una referencia a la matriz (es decir, el campo), por lo que esa sería una pequeña cantidad de memoria que se usa que realmente no necesita.
Como dije, ese es un ejemplo simplista. Y honestamente, es raro que alguna vez deba considerar escenarios como ese. Solo pensé que lo mencionaría para que no tengas la impresión equivocada de que establecer un campo a Nothing
Literalmente nunca logra nada.
*En realidad no estoy citando a nadie específico aquí; Esto es solo una generalización excesiva que he escuchado declarado más de una vez.
Otros consejos
No lo hagas. Esto fue importante en los días VB6, pero para .NET es posible (aunque muy poco probable) que realmente tire el recolector de basura y tenga otros efectos secundarios inesperados.