gpt4 book ai didi

c# - 处理集合时正确使用属性

转载 作者:行者123 更新时间:2023-11-30 15:50:09 26 4
gpt4 key购买 nike

我想知道在处理集合时使用属性的最佳方式是什么。

例如,我有一个 Foo 类,我想存储该类的列表。应使用以下哪项:

private List<Foo> myList;
private List<Foo> myOtherList = new List<Foo>();

现在的属性(property):

public List<Foo> ListOfFoo
{
get
{
return myList;
}
set
{
myList= new List<Foo>(value);
}
}

或者集合应该只是值?

public List<Foo> ListOfFoo
{
get
{
return myList;
}
set
{
myList= value;
}
}

最佳答案

选择

private List<Foo> myOtherList = new List<Foo>();

因为另一个只是声明了一个引用(设置为 null),上面的示例声明了一个对列表的引用,创建了一个列表并将新列表分配给该引用。

选择

public List<Foo> ListOfFoo
{
get { return myList; }
set { myList= new List<Foo>(value); }
}

当您希望 myList 不反射(reflect)列表分配给 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

上面的“also”是引号,因为实际上只有一个列表,我的第一个和第二个都指向同一个列表。

关于c# - 处理集合时正确使用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com