ホームページ バックエンド開発 C#.Net チュートリアル C# のインデクサーの簡単な理解と使用法

C# のインデクサーの簡単な理解と使用法

Dec 17, 2016 am 09:14 AM
インデクサ

Indexer は、配列のような方法でオブジェクトにアクセスできるようにする特別なクラス メンバーであり、プログラムをより直感的で簡単に作成できるようにします。

1. インデクサーの定義

C# のクラス メンバーは、配列やコレクションを含む任意の型にすることができます。クラスに配列メンバーとコレクション メンバーが含まれている場合、インデクサーは配列メンバーまたはコレクション メンバーへのアクセスを大幅に簡素化します。

インデクサーを定義する方法は、属性の定義に似ています。その一般的な形式は次のとおりです。

[修饰符] 数据类型 this[索引类型 index]  
 
{  
    get{//获得属性的代码}                                                   
    set{ //设置属性的代码}  
}
ログイン後にコピー

修飾子には、public、protected、private、internal、new、virtual、sealed、override、abstract、extern が含まれます。データ型は、アクセスされる配列またはコレクション要素の型を表します。

インデクサーのタイプは、インデクサーが配列またはコレクションの要素にアクセスするために使用するインデックスのタイプを示します。これは、整数または文字列であり、このオブジェクトを操作する配列またはコレクションのメンバーを表し、単純にインデックスとして理解できます。インデクサーの名前。インデクサーにユーザー定義の名前を付けることはできません。 例:

class Z  
{  
        //可容纳100个整数的整数集  
        private long[] arr = new long[100];  
        //声明索引器  
        public long this[int index]  
        {  
            get 
            { //检查索引范围  
                if (index < 0 || index >= 100)  
                {  
                    return 0;  
                }  
                else 
                {  
                    return arr[index];  
                }  
            }  
            set 
            {  
                if (!(index < 0 || index >= 100))  
                {  
                    arr[index] = value;  
                }  
            }  
   }
ログイン後にコピー

2. インデクサーの使用

インデクサーを介してクラスのインスタンスの配列メンバーにアクセスできます。一般的な形式は次のとおりです。

オブジェクト名 [インデックス]。

インデックスのデータ型 インデクサーと同じインデックス型である必要があります。例:

Z  z=new  z();  
z[0]=100;  
z[1]=101;  
Console.WriteLine(z[0]);
ログイン後にコピー

は、最初にオブジェクト z を作成し、次にインデックスを介してオブジェクト内の配列要素を参照することを意味します。

C# では、インデクサーの型を整数に制限しません。たとえば、インデクサーで文字列を使用できます。このタイプのインデクサーは、コレクション内の文字列を検索し、対応する値を返すことによって実装されます。アクセサーはオーバーロードできるため、文字列バージョンと整数バージョンが共存できます。

例:

class DayCollection
{   
      string[] days={"Sun","Mon","Tues","Wed","Thurs","Fri","Sat"};  
      private int GetDay(string testDay)  
     {  
        int i=0;  
        foreach(string day in days)  
          {  
              if(day==testDay)  
                      return i;  
                      i++;  
           }  
         return -1;  
      }  
     public int this[string day]  
      {  
          get{return (GetDay(day))}  
      }  
}  
  
 
static void Main(string[] args)  
{  
     DayCollection week=new DayCollection();  
     Console.WriteLine("Fri:{0}",week["Fri"]);  
     Console.WriteLine("ABC:{0}",week["ABC"]);  
}
ログイン後にコピー

Result: Fri:5

ABC:-1

3. インターフェイスのインデクサー

インデクサーはインターフェイスでも宣言できます。 まず、インターフェイス インデクサーとクラス インデクサーの間には 2 つの違いがあります。インターフェイス インデクサーは修飾子を使用しません。第 2 に、インターフェイス インデックスにはアクセサー get または set のみが含まれ、実装ステートメントは含まれません。アクセサーの目的は、インデクサーが読み取り/書き込みであるか、読み取り専用であるか、書き込み専用であるかを示すことです。読み取り専用の場合は get アクセサーも set アクセサーも省略できません。アクセサーは省略されます。書き込み専用の場合は、get アクセサーを省略します。

例:

public interface IAddress  
{  
string this[int index]{get;set;}  
string Address{get;set;}  
string Answer();  
}
ログイン後にコピー

は、宣言されたインターフェイス IAddress にインデクサー、プロパティ、メソッドの 3 つのメンバーが含まれていることを示します。そのうちのインデクサーは読み取りおよび書き込み可能です。

4. インデクサーと属性の比較

インデクサーと属性は両方ともクラスのメンバーであり、構文は非常に似ています。インデクサーは通常、カスタム コレクション クラスで使用されます。インデクサーを使用してコレクション オブジェクトを操作するのは、配列プロパティを使用するのと同じくらい簡単です。これにより、クラスのフィールド メンバーの柔軟性が向上します。

C# のインデクサーの簡単な理解と使用法




C# のインデクサーの簡単な理解と使用法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

テストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテスト テストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテスト Apr 09, 2025 am 12:04 AM

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

C#.NET:コアの概念とプログラミングの基礎を探る C#.NET:コアの概念とプログラミングの基礎を探る Apr 10, 2025 am 09:32 AM

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

c#.netの継続的な関連性:現在の使用法を見る c#.netの継続的な関連性:現在の使用法を見る Apr 16, 2025 am 12:07 AM

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

Webからデスクトップまで:C#.NETの汎用性 Webからデスクトップまで:C#.NETの汎用性 Apr 15, 2025 am 12:07 AM

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

高度なC#.NETチュートリアル:次のシニア開発者インタビューをエース 高度なC#.NETチュートリアル:次のシニア開発者インタビューをエース Apr 08, 2025 am 12:06 AM

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

c#.netはあなたにぴったりですか?その適用性の評価 c#.netはあなたにぴったりですか?その適用性の評価 Apr 13, 2025 am 12:03 AM

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

汎用性のある.NET言語としてのC#:アプリケーションと例 汎用性のある.NET言語としてのC#:アプリケーションと例 Apr 26, 2025 am 12:26 AM

C#は、エンタープライズレベルのアプリケーション、ゲーム開発、モバイルアプリケーション、Web開発で広く使用されています。 1)エンタープライズレベルのアプリケーションでは、C#がasp.netcoreにWebAPIを開発するためによく使用されます。 2)ゲーム開発では、C#がUnityエンジンと組み合わされて、ロールコントロールやその他の機能を実現します。 3)C#は、コードの柔軟性とアプリケーションのパフォーマンスを改善するために、多型と非同期プログラミングをサポートします。

.NET内のC#コード:プログラミングプロセスの調査 .NET内のC#コード:プログラミングプロセスの調査 Apr 12, 2025 am 12:02 AM

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

See all articles