Выберите
private List<Foo> myOtherList = new List<Foo>();
, потому что другой просто объявляет ссылку (которая имеет значение null), в примере выше объявляется ссылка на список, создается список и назначается этот новый список для ссылки.
Выберите
public List<Foo> ListOfFoo
{
get { return myList; }
set { myList= new List<Foo>(value); }
}
Когда вы хотите, чтобы myList НЕ ссылался на какие-либо изменения, которые происходят со списком после его присвоения myList, например,
List<string> myFirstList = new List<string>();
myFirstList.Add("Hello");
myFirstList.Add("World");
List<string> mySecondList = new List<string>(myFirstList);
// mySecondList now contains Hello & world
myFirstList.Add("Boyo");
// myFrist List now contains Hello, world & Boyo
// mySecondList still contains Hello & world
Выберите
public List<Foo> ListOfFoo
{
get { return myList; }
set { myList= value; }
}
Когда вы хотите, чтобы обе ссылки указывали на один и тот же объект, например
List<string> myFirstList = new List<string>();
myFirstList.Add("Hello");
myFirstList.Add("World");
List<string> mySecondList = myFirstList;
// mySecondList now contains Hello & world
myFirstList.Add("Boyo");
// myFrist List now contains Hello, world & Boyo
// mySecondList "also" contains Hello, world & Boyo
Выше "также" в кавычках, потому что на самом деле есть только один список, и моя первая и вторая точка указывают на один и тот же список.