加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – property是readonly,但成员可以访问

发布时间:2020-12-16 00:05:13 所属栏目:百科 来源:网络整理
导读:为什么我可以像这样实现只读属性… public IListobject SelectedItems { get; } …当我使用该属性时,仍然可以使用其成员,如添加,删除等? 是不是应该只读“一路向下”? 解决方法 isn’t readonly supposed to be readonly “all the way down” ? 这不是“
为什么我可以像这样实现只读属性…

public IList<object> SelectedItems { get; }

…当我使用该属性时,仍然可以使用其成员,如添加,删除等?

是不是应该只读“一路向下”?

解决方法

isn’t readonly supposed to be readonly “all the way down” ?

>这不是“只读”类型.它是一个可以检索值的属性(IList< object>),但不能将值设置为IList< object>的不同实例.因为没有物业设定者.
>不.它只是“一直向下” – 事实上,该物业只有一个吸气剂意味着你可以获得价值,但你可以做任何你想做的事情.

请注意,我要小心使用“readonly”一词. C#具有不同的,不同的含义和专用的readonly关键字,仅适用于字段.这在C#意义上不是“只读”,而是仅提供get操作的属性.

如果你想要一个“只读”列表,一个好的选择是返回ReadOnlyCollection<T>.例如,如果你的内部类是List< T>,你可以使用:

public IList<object> SelectedItems { get { return this.selected.AsReadOnly(); } }

如果你打算这样做,实际上返回ReadOnlyCollection< T>可能会更好.以及:

public ReadOnlyCollection<object> SelectedItems { get { return this.selected.AsReadOnly(); } }

这样,用户就不会期望在结果列表中调用.Add()是安全的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读