Supponiamo di avere una classe Persona:È meglio utilizzare Enumerable.Empty <T>() in opposizione al nuovo Elenco <T>() per inizializzare un IEnumerable <T>?
public class Person
{
public string Name { get; set;}
public IEnumerable<Role> Roles {get; set;}
}
dovrei ovviamente istanziare i ruoli nel costruttore. Ora, ho usato per farlo con una lista come questa:
public Person()
{
Roles = new List<Role>();
}
Ma ho scoperto questo metodo statico nella System.Linq
namespace
IEnumerable<T> Enumerable.Empty<T>();
Da MSDN:
Il Il metodo
Empty(TResult)()
memorizza nella cache una sequenza vuota di tipoTResult
. Quando l'oggetto restituito viene enumerato, non produce elementi.In alcuni casi, questo metodo è utile per passare una sequenza vuota a un metodo definito dall'utente che prende un
IEnumerable(T)
. Può anche essere utilizzato per generare un elemento neutro per i metodi comeUnion
. Vedere la sezione Esempio per un esempio di questo uso di
Quindi è meglio scrivere il costruttore in questo modo? Lo usi? Perché? o se no, perché no?
public Person()
{
Roles = Enumerable.Empty<Role>();
}
Sei sicuro di voler un (pubblico) sorge nella proprietà ruoli? –
Questa è una classe Data. Intendo utilizzare questa classe come classe Model quando si implementa un modello di repository con Entity Framework 4.0 (giocando intorno ...). quindi penso che sia bello avere un setter pubblico qui, non è vero? –
serbech, come si aggiungerà un ruolo (all'interno della persona) quando un altro codice può installare qualsiasi tipo di classe derivata IEnumerable per l'elenco? A cosa lo lanci? –