Codificación
cuanto a codificación de la práctica, la segunda opción es mejor, en el que el objeto se almacena en una variable primero. La razón que lo hace mejor es que puede nombrar el objeto de acuerdo con el contexto donde se usa. Por ejemplo:
var pendingUserForRegistration = new User();
Rendimiento
En cuanto a rendimiento, la primera opción podría ser un poco mejor, ya que utiliza el objeto directamente de la pila y se salta el almacenamiento del objeto en una variable local .Se puede observar a partir de la IL de los métodos:
IL de primera:
.maxstack 8
L_0000: nop
L_0001: newobj instance void NS.ClassA::.ctor()
L_0006: call instance void MS.ClassA::M()
L_000b: nop
L_000c: ret
IL de segundos:
.maxstack 1
.locals init (
[0] class NS.ClassA c)
L_0000: nop
L_0001: newobj instance void NS.ClassA::.ctor()
L_0006: stloc.0
L_0007: ldloc.0
L_0008: callvirt instance void NS.ClassA::M()
L_000d: nop
L_000e: ret
Esto es por lo general una pequeña sobrecarga de rendimiento, es Es difícil encontrar un caso donde resolverá un problema de rendimiento real.
En pocas palabras
Dado que la capacidad de mantenimiento de la ganancia de código aquí es mayor que la ganancia de rendimiento que es preferible almacenar el objeto en una variable con el nombre significativo.
¿Crea ClassA algún recurso no administrado o implementa IDisposable? – SwDevMan81