gpt4 book ai didi

c# - 返回一个 List 以便调用者不能修改它

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:17 36 4
gpt4 key购买 nike

我正在公开 List<string>作为属性,但要避免在对象之外对其进行修改。在 C# 中执行此操作的最佳方法是什么,我是否创建 List<string> 的新副本?或者做点别的..

最佳答案

这对于 List<T> 是不可能的类型。最好的方法是公开一个属性 ReadOnlyCollection<T>输入(MSDN)。

您可能认为它显式实现了 ICollection公开的接口(interface) Add()方法,但不要担心并记住:

ICollection.Add

Adds an item to the ICollection. This implementation always throws NotSupportedException.

顺便说一句,为什么你需要 List<T>类型?可能公开类型为 IEnumerable<T> 的属性够了吗? List<T>具体有哪些功能你在使用,也许是内置的排序/搜索方法?不管怎样,如果你真的需要List<T> - 您可以将其用作属性支持字段的类型,并通过 ReadonlyCollection<T>(IList<T> list) 对其进行转换构造函数或使用 List<T>.AsReadonly()方法调用,自AsReadonly() 以来真的没有区别是执行 return new ReadOnlyCollection<T>(this); 的单行方法.

关于c# - 返回一个 List<String> 以便调用者不能修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390017/

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