ホームページ  >  記事  >  バックエンド開発  >  C# のインデクサーの詳細な紹介

C# のインデクサーの詳細な紹介

黄舟
黄舟オリジナル
2017-05-07 10:32:491344ブラウズ

Indexer は、C# によって導入された新しいクラス メンバーであり、クラス内の オブジェクト配列 と同じくらい便利かつ直観的に参照できるようにします。インデクサーは プロパティ に非常に似ていますが、インデクサーはパラメーター リストを持つことができ、クラスに対して直接ではなく、インスタンス オブジェクトに対してのみ機能します。インデクサーを定義するクラスを使用すると、配列のようにアクセスできます。 [ ] Operatorクラスのメンバーにアクセスします。 (もちろん、インデクサーを介した配列のマッピングなど、高度なアプリケーションはたくさんあります。)

インデクサーを使用すると、クラスまたは構造体のインスタンスに配列と同じようにインデックスを付けることができます。 インデクサーはプロパティに似ていますが、異なる点は、その値関数がパラメータを取ることです。 インデクサーを使用すると、インデクサーへのアクセスにパラメーターが必要であることを除いて、配列と同じ方法でクラスまたは構造体のインスタンスにインデックスを付けることができます。

インデクサーの概要

    インデクサーを使用して、配列のような方法でオブジェクトにインデックスを付けます。
  • get関数は値を返します。
  • set

    value 関数は値を割り当てます。

  • このキーワードは、インデクサーを定義するために使用されます。
  • value キーワードは、セット インデクサーによって割り当てられる値を定義するために使用されます。
  • インデクサーは、
  • 整数

    値に基づいてインデックスを作成する必要はありません。特定の検索メカニズムを定義するのはあなた次第です。

  • インデクサーは
  • 過負荷

    になる可能性があります。

  • インデクサーは、
  • 二次元配列

    にアクセスする場合など、複数の仮パラメータを持つことができます。

インデクサーと配列の比較:

(1) インデクサーのインデックス値 (Index) の型は制限されません

(2) インデクサーは次のことを許可しますリロード中

(3) インデクサーは

変数ではありません

インデクサーと属性の違い

(1) 属性は次のように識別されます名前とインデクサーは関数フォーム識別子

(2) インデクサーはオーバーロードできますが、プロパティはオーバーロードできません

(3) インデクサーはstaticとして宣言できません、プロパティは

簡単なインデクサーの例

りー


添字としてstringを使用してインデクサーにアクセスします

using System;
using System.Collections;

public class IndexerClass
{
    private string[] name = new string[2];

    //索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
    public string this[int index]
    {
        //实现索引器的get方法
        get
        {
            if (index < 2)
            {
                return name[index];
            }
            return null;
        }

        //实现索引器的set方法
        set
        {
            if (index < 2)
            {
                name[index] = value;
            }
        }
    }
}
public class Test
{
    static void Main()
    {
        //索引器的使用
        IndexerClass Indexer = new IndexerClass();
        //“=”号右边对索引器赋值,其实就是调用其set方法
        Indexer[0] = "张三";
       Indexer[1] = "李四";
        //输出索引器的值,其实就是调用其get方法
        Console.WriteLine(Indexer[0]);
       Console.WriteLine(Indexer[1]);
    }
}

インデクサーのオーバーロード

public class IndexerClass
{
    //用string作为索引器下标的时候,要用Hashtable
    private Hashtable name = new Hashtable();

    //索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
    public string this[string index]
    {
        get { return name[index].ToString(); 
        set { name.Add(index, value); }
    }
}
public class Test
{
    static void Main()
    {
        IndexerClass Indexer = new IndexerClass();
        Indexer["A0001"] = "张三";
        Indexer["A0002"] = "李四";
        Console.WriteLine(Indexer["A0001"]);
        Console.WriteLine(Indexer["A0002"]);
    }
}

マルチパラメータインデックスデバイス

rrreええ

以上がC# のインデクサーの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。