画像ファイル
画像ファイル インデクサ
VB.NET C#全般
1羊の皮を着た狼 VB.NET
2Form1、Form2の相互参照
3Form1、Form2の相互参照 2
4VB.NET C# データ型の基本
5VB.NET C# 文字列
6VB.NET タイマー精度
7BackgroundWorkerの魅力1..
8BackgroundWorkerの魅力2..
9VB6のタイマー
10コントロールの配列をインデクサ..
11コントロールの配列はジェネリク..
12インデクサ(C#、VB.NET)
13インデクサでBit操作
14Unicode 入門
15デリゲート入門
16マルチスレッド入門
17イベント入門
18デリゲートとイベント
18インターフェースの基本

RichTextBox関係
1RichTextBoxの不思議
2テキスト色付け高速化計画
3VB.NET RichTextBox1
4VB.NET RichTextBox 2

RS-232C関係
1RS-232Cの基礎
2RS-232Cの何が変わった..
3SerialPortクラス
4Unicode(ユニコード)の壁
5マルチスレッドの壁
6RS-232C サンプルコード
7RS-232CのHEXモニタ
8RS-232C 送信モジュール
9RS-232Cのループテスト
10RS-232Cのピンチェンジ..

Socket通信
1C#、VB2005 でSocket通信
2サーバー 複数接続

プロセス間通信
1プロセス間通信(送信側)
2プロセス間通信(受信側)


質問、意見はこちらに
画像ファイル

インデクサとは?
インデクサとは何であろうか?
今までの説明 「インデクサ」 は解りにくいとの事で書き直しました。

文字列"ABC"の中から任意の位置の文字(文字列ではない)を取得したが、どうしたら良いのかと
聞かれたので下のコードを示しました。
string s = "ABC";
char c1 = Convert.ToChar(s.Substring(1, 1));
これで2番目の文字が取得出来ると答えたら、「s1[1]等と配列の様に取得できませんか」と要望が返ってきた。

これぞインデクサの出番とばかりに
インデクサを使って文字列の中から任意の文字を取得する
C# コード
class Program
{
static void Main(string[] args)
{
string s = "ABC";
//sArryクラスを作成してsを渡す
sArray sa = new sArray(s);
char c = sa[1];//一文字取得
Console.WriteLine(c.ToString());
Console.Read();
}
}

//インデクサを持つクラス
public class sArray
{
private string st;
public sArray(string s)
{
st = s;
}
//インデクサ
public char this[int index]
{
get
{
return Convert.ToChar(st.Substring(index, 1));
}
}
}
これで出来ますと答えたら感心して、インデクサって便利ですねと言って、帰っていった。
public char this[int index]
がインデクサで有る、this[int index]とは面白い書き方である。

インデクサは引数付きのプロパティで有る
インデクサは引数付きのプロパティで有る、this[ ]とthisの後に引数を書く。
int indexの代わりに他のObjectでも良い、要するに引数に従って値を返せばよいので有る。
上のコードの場合は引数がIntegerで、其の番号の頭からの文字を返している。

実はStringクラスは既にインデクサを持っていて、上のコードは単に下のコードで良いのです。
C# コード
static void Main(string[] args)
{
string s = "ABC";
char c = s[1];//一文字取得
Console.WriteLine(c.ToString());
Console.Read();
}

ただし最初のコードは間違っていません、インデクサの設定の仕方が解ると思います。
そしてStringクラスのインデクサはインデクサをどんな時に使用するか理解できる良い例だと思います。

画像ファイル