En su escenario, parece que la creación real del objeto se está realizando dentro de su método GetList()
. Entonces su primera muestra sería el uso correcto.
Cuando se crea, su List<MyCustomClass>
se almacena en el montón, y su listCustClass
es simplemente una referencia a ese nuevo objeto. Cuando establece listCustClass en GetList()
, el puntero de referencia de listCustClass
se descarta y reemplaza con un puntero de referencia a lo que GetList()
devuelve (podría ser nulo). Cuando esto sucede, su List<MyCustomClass>
original todavía está en el montón, pero ningún objeto lo señala, por lo que solo desperdicia recursos hasta que el recolector de basura lo recupera y lo limpia.
Para resumir cada vez que creas un objeto nuevo y luego lo abandonas, como en el segundo ejemplo, esencialmente estás perdiendo memoria llenando el montón con información inútil.
¿Realmente está preguntando si debería escribir fábricas o no? – annakata
No, creo que no entiende que "nuevo" significa una llamada de constructor y la creación de un nuevo objeto. De lo contrario, sabría mejor que crear un nuevo objeto y luego tirarlo. Tal vez proviene de VB.NET, donde la palabra clave "Nuevo" puede ser parte de la sintaxis de la declaración, por lo que piensa que eso es lo que es en C#. –
No estoy seguro acerca de las etiquetas C# y .NET en esta, ya que es una pregunta de OOP bastante general. – Welbog