关于C#索引器与属性

XD-1 2015-12-29 10:05:10
想不明白一个问题,如果一个类中有成员变量为数组,可以通过你索引器的方式来让外界很方便的操作此数组,但是如果为此数组开放一个属性不是一样的效果么?那为什么还要用C#还要提供索引器呢?
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerry_zjnb 2015-12-29
  • 打赏
  • 举报
回复
引用 3 楼 u013899077 的回复:
[quote=引用 1 楼 jerry_zjnb 的回复:] 这里涉及到访问控制。 如果将数组成员变量设置public,则该类外部的代码能对该数组执行任何操作,例如添加删除元素,但是如果将该数组成员变量设置为private并提供索引器,则该类外部的代码只能访问到指定的数组元素。
对,突然想通了,开始没想通的是数组只设置一个get属性也能限制写入,但是 数组是引用类型,如果开放get属性,外界也能对其进行删除操作。但是外部只能访问到指定的数组元素是什么意思呢?通过在索引器里面写if条件实现?[/quote] “外部只能访问到指定的数组元素”,意思是只能通过下标方式访问单个元素, 如何定义使用这种类,可以参考系统很多自带的集合类,一般类名以Collection结尾的都是这样的类,会提供插入(Insert)、删除(Remove)等方法。
Poopaye 2015-12-29
  • 打赏
  • 举报
回复
list[0] list.Items[0] 区别很明显啊
XD-1 2015-12-29
  • 打赏
  • 举报
回复
引用 1 楼 jerry_zjnb 的回复:
这里涉及到访问控制。 如果将数组成员变量设置public,则该类外部的代码能对该数组执行任何操作,例如添加删除元素,但是如果将该数组成员变量设置为private并提供索引器,则该类外部的代码只能访问到指定的数组元素。
引用 1 楼 jerry_zjnb 的回复:
这里涉及到访问控制。 如果将数组成员变量设置public,则该类外部的代码能对该数组执行任何操作,例如添加删除元素,但是如果将该数组成员变量设置为private并提供索引器,则该类外部的代码只能访问到指定的数组元素。
对,突然想通了,开始没想通的是数组只设置一个get属性也能限制写入,但是 数组是引用类型,如果开放get属性,外界也能对其进行删除操作。但是外部只能访问到指定的数组元素是什么意思呢?通过在索引器里面写if条件实现?
XD-1 2015-12-29
  • 打赏
  • 举报
回复
引用 2 楼 xdashewan 的回复:
隐藏属性,实现受控访问,最简单的例子,我可以限制你访问下标0-10的值,同时可以限制你获知访问的下标的确切对象
属性里写if条件句也能限制访问啊?
xdashewan 2015-12-29
  • 打赏
  • 举报
回复
隐藏属性,实现受控访问,最简单的例子,我可以限制你访问下标0-10的值,同时可以限制你获知访问的下标的确切对象
jerry_zjnb 2015-12-29
  • 打赏
  • 举报
回复
这里涉及到访问控制。 如果将数组成员变量设置public,则该类外部的代码能对该数组执行任何操作,例如添加删除元素,但是如果将该数组成员变量设置为private并提供索引器,则该类外部的代码只能访问到指定的数组元素。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧