博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net 索引器
阅读量:4578 次
发布时间:2019-06-08

本文共 1238 字,大约阅读时间需要 4 分钟。

一个类型定义一个索引器:

public class Example     {
//定义一个索引器 private Int32 _str; public Int32 this[Boolean b] {
get { return _str; } set { _str = value; } } }

一个类型可以有多个索引器,如下:

public class Example     {      //定义一个索引器         private Int32 _int; public Int32 this[Boolean b]         {
get { return _int; } set { _int = value; } } //定义另一个索引器 private String _str = "example"; public String this[Int32 index] {
get { return _str; } set { _str = value; } } }

当一个类型存在多个索引器,如果说要在不同的编程语言间进行操作时,可以为索引器指定名称,方式如下:

利用System.Runtime.CompilerServices; 中的[IndexerName("name")]特性来完成。

以上面的代码为例:

public class Example     {
//定义一个索引器 private Int32 _int; [IndexerName("IntIndexer")] public Int32 this[Boolean b] {
get { return _int; } set { _int = value; } } //定义另一个索引器 private String _str = "example"; [IndexerName("IntIndexer")] public String this[Int32 index] {
get { return _str; } set { _str = value; } } }

c#对索引器的限制会导致以下的问题:如果其它语言的开发人员在一个类型中定义了多个不同名称的含参属性,那么c#如何使用该类?答案是该类型必须选择一个含参属性作为默认的属性。这可以通过System.Reflection.DefaultMemberAttribute来实现。

转载于:https://www.cnblogs.com/challengesoflife/archive/2012/02/06/2339731.html

你可能感兴趣的文章
Trie模版
查看>>
2018HDU多校训练-3-Problem F. Grab The Tree
查看>>
2016012032四则运算网页版结对项目报告
查看>>
边工作边刷题:70天一遍leetcode: day 45
查看>>
淘宝专业版改基础版方法
查看>>
[转]ARM Pipeline
查看>>
[转]Blocking Code Injection on iOS and OS X
查看>>
自动化测试
查看>>
vue $options 获取自定义属性
查看>>
Vue避免 v-if 和 v-for 用在一起
查看>>
TraceSource记录程序日志
查看>>
【Source教程】GCFScape下载安装与使用
查看>>
数据结构 单链表反转 回顾练习
查看>>
N!分解素因子及若干问题
查看>>
主动对象
查看>>
C++ string int 转换 split
查看>>
网站繁简切换的JS遇到的一个BUG
查看>>
Docker容器技术
查看>>
五秒后页面自动跳转
查看>>
压力测试、负载测试、性能测试
查看>>