C# で演算子をオーバーロードするにはどうすればよいですか?

王林
リリース: 2023-09-04 09:13:02
転載
939 人が閲覧しました

如何重载 C# 中的运算符?

[] 演算子はインデクサーと呼ばれます。

インデクサーを使用すると、配列などのオブジェクトのインデックスを作成できます。クラスのインデクサーを定義すると、クラスは仮想配列のように動作します。その後、配列アクセス演算子 ([ ]) を使用して、そのクラスのインスタンスにアクセスできます。

インデクサーは過負荷になる可能性があります。インデクサーは複数のパラメーターを宣言することもでき、各パラメーターは異なる型にすることもできます。インデックスは必ずしも整数である必要はありません。

例 1

static void Main(string[] args){
   IndexerClass Team = new IndexerClass();
   Team[0] = "A";
   Team[1] = "B";
   Team[2] = "C";
   Team[3] = "D";
   Team[4] = "E";
   Team[5] = "F";
   Team[6] = "G";
   Team[7] = "H";
   Team[8] = "I";
   Team[9] = "J";
   for (int i = 0; i < 10; i++){
      Console.WriteLine(Team[i]);
   }
   Console.ReadLine();
}
class IndexerClass{
   private string[] names = new string[10];
   public string this[int i]{
      get{
         return names[i];
      } set {
         names[i] = value;
      }
   }
}
ログイン後にコピー

出力

A
B
C
D
E
F
G
H
I
J
ログイン後にコピー

例 2

書き換え []

static class Program{
   static void Main(string[] args){
      IndexerClass Team = new IndexerClass();
      Team[0] = "A";
      Team[1] = "B";
      Team[2] = "C";
      for (int i = 0; i < 10; i++){
         Console.WriteLine(Team[i]);
      }
      System.Console.WriteLine(Team["C"]);
      Console.ReadLine();
   }
}
class IndexerClass{
   private string[] names = new string[10];
   public string this[int i]{
      get{
         return names[i];
      }
      set{
         names[i] = value;
      }
   }
   public string this[string i]{
      get{
         return names.Where(x => x == i).FirstOrDefault();
      }
   }
}
ログイン後にコピー

出力

A
B
C
C
ログイン後にコピー

以上がC# で演算子をオーバーロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート