MyDbEntities context = new MyDbEntities();
var result = context.StoredProcedureName(userId);
Nella situazione di cui sopra, è considerata la best practice usare var
o ObjectResult<ComplexType>
?
MyDbEntities context = new MyDbEntities();
var result = context.StoredProcedureName(userId);
Nella situazione di cui sopra, è considerata la best practice usare var
o ObjectResult<ComplexType>
?
Generalmente, se non puoi dire il tipo di ritorno leggendo la riga in questione (o un'altra linea molto vicina), dovresti usare il tipo esplicito. Ciò renderà la leggibilità del tuo codice molto migliore.
var
deve essere utilizzato solo quando il tipo implicito è individuabile nella stessa riga di codice o molto vicino.
Nel tuo esempio, dovresti davvero utilizzare ObjectResult<ComplexType>
:
ObjectResult<ComplexType> result = context.StoredProcedureName(userId);
Questi casi sono ok per var
, perché i tipi sono facilmente distinguibili:
var user = context.Users.First(x => x.Id == userId);
o
var users = context.Users.Where(x => x.LastName == lastName);
foreach(var user in users)
{
//do stuff
}
Non avrei problemi a usare var
se il nome del tuo metodo e / o il nome della variabile indicavano chiaramente cosa veniva restituito. La leggibilità è la chiave.
var foos = context.GetUnallocatedFoosForUser(userId);
Per quello che vale, quando usi var, non stai legando dinamicamente nulla. Il compilatore E l'IDE sanno di che tipo (anche se è solo object
) con cui hai a che fare qui. La parola chiave var
è solo una scorciatoia per "utilizzare qualsiasi tipo sia sul lato destro".
Sarebbe diverso se tu usassi dynamic
, ma questo è un tipo di domanda molto diverso e non applicabile in questa situazione.
Leggi altre domande sui tag c# .net entity-framework