集合上下文中 ReadOnlyCollection string[] 之间的区别

发布于 2024-08-09 03:35:27 字数 276 浏览 5 评论 0原文

IList<string> strList = new string[] { "Apple", "Mango", "Orange" };

IList<string> lst = new ReadOnlyCollection<string>(new[]{"Google",
"MSN","Yahoo"});

在这两种情况下,我都无法使用“Add()”方法来添加新项目。然后几乎都 声明是一样的吗?

IList<string> strList = new string[] { "Apple", "Mango", "Orange" };

IList<string> lst = new ReadOnlyCollection<string>(new[]{"Google",
"MSN","Yahoo"});

In both cases i can not use "Add()" method for adding new items.then almost both
declarations are same?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你与清晨阳光 2024-08-16 03:35:27

对于第一个,strList[2] = "Pear"; 可以工作……但对于第二个则不行。数组始终是可变的,因为您可以通过索引重新分配,即使您无法添加/删除。只读集合就是这样:只读。

With the first, strList[2] = "Pear"; will work... not with the second. Arrays are always mutable in that you can re-assign by index, even if you can't add/remove. A read-only-collection is just that: read-only.

云淡月浅 2024-08-16 03:35:27

strList 中的项目可以更改(不是添加或删除,而是更改)。

The items in strList can be changed (not added or removed, but changed).

梦中的蝴蝶 2024-08-16 03:35:27

在第一个声明中,您仍然可以使用以下内容:

strList[0] = "Not a fruit";

ReadOnlyCollection 将任何 IList 包装在轻量级对象中。它将所有不会更改集合的调用传递给包装对象(get Count、get Item[]GetEnumerator),但是对所有会更改集合的调用抛出异常(AddRemoveClear、set Item[] )。

数组的大小不可调整,但也不是只读的。理解这种区别很重要,否则您可能会引入一些严重的安全问题,例如,请参阅 Path.InvalidPathChars 字段

In the first declaration, you can still use the following:

strList[0] = "Not a fruit";

ReadOnlyCollection<T> wraps any IList<T> in a lightweight object. It passes all calls that wouldn't change the collection on to the wrapped object (get Count, get Item[], GetEnumerator), but throws an exception for all calls that would change the collection (Add, Remove, Clear, set Item[]).

Arrays are not resizable, but they are not readonly. The distinction is important to understand or you can introduce some serious security issues, for an example see Path.InvalidPathChars Field.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文