zoukankan      html  css  js  c++  java
  • .net 索引器

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

        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来实现。


  • 相关阅读:
    PowerShell 学习(一):运算符
    Create word clouds with Wordle
    淘宝惊现“同店购”?
    “二叉查找树”学习
    云计算软件之——OpenNebula
    "栈"应用——求解迷宫
    "队列"学习
    “串”学习——三种表示方法
    尖端技术104之计算机技术的未来
    “二叉树”——链表表示
  • 原文地址:https://www.cnblogs.com/challengesoflife/p/2339731.html
Copyright © 2011-2022 走看看