gpt4 book ai didi

c# - 清除 property-(public) List 而不清除 private List

转载 作者:行者123 更新时间:2023-11-30 21:43:44 27 4
gpt4 key购买 nike

我是 C# 的新手(第一篇文章),目前正在处理有关“封装”的问题。基本上我有两个这样的类(简化):

class Myclass
{

private List<X> _list;
public List<X> list
{
get
{
return _list;
}
}
...
public Myclass (List<X> input)
{
_list = new List <X>(input);
}
...
}

class Testclass
{
List<X> inputList = new List<X>() {"bla", "bla"};
Myclass myclass = new Myclass(inputlist);

myclass.list.Clear();
List<X> newL = myclass.list;
}

我不应该对第二类“Testclass”进行任何更改。

这是我的问题:myclass.list.Clear() 清除公共(public)列表和私有(private)列表。但我只希望它清除公共(public)列表或什么都不做,因为最后我需要列表 newL 来填充私有(private)列表(通过 get-accessor 的公共(public)列表)之外的项目。

由于我应该在不接触第二类的情况下解决问题,所以我不知道该怎么做。有人告诉我公开列表称为属性,对吗?如果是这样,公开列表叫什么?

就像我说的,我在一般编程方面非常糟糕/新手(19 岁/o)所以非常感谢初学者友好的答案!

最佳答案

public List<X> list
{
get
{
return new List<X>(_list);
}
}

每次都会返回列表的副本。因此,从外部来看,调用者永远无法访问内部的真实 列表。他可以随心所欲地处理副本,清除、添加、删除。它不会改变私有(private)列表。

请注意,在实际生产代码中,您会更改该属性以不返回列表,而是一些根本没有更改它的选项(如 IEnumerable<T> )。给某人一个 List 然后忽略他用它做的任何事情对于调用者来说是非常不直观的并且不是很好的编程。

关于c# - 清除 property-(public) List 而不清除 private List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41429769/

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