インデクサ
ただしC++とC#の言語設計上の事情も絡んでいるので、単純に比較できるものではない。
インデクサではプロパティのように値を得るときと代入するときとで実際には別のメソッドに分かれている。
インデクサは単独で多次元な配列を模倣できる。C++で同じようなことをするには間に一時的にオブジェクトを入れるなどの技巧を凝らす必要がある。
他の言語ではC#のインデクサに似た機能として、Visual Basic .NETの引数付きプロパティやC++/CLIのインデックス付きプロパティなどが存在する。
インデクサをサポートしない言語、例えばJavaにおいて、配列リストを表すコレクションの要素へのアクセスは、次のようなjava.util.Listインターフェイスのget/setメソッドによって提供される。
一方、C#のインデクサでは、配列リストの要素へのアクセスを配列のアクセスと同じように記述することができる。以下の例ではSystem.Collections.Generic.IListインターフェイスで定義されているインデクサを使用している。
インデクサを定義する際、インデックスとして整数以外の値 (文字列やオブジェクトなど) も使用することができ、ハッシュテーブルなどの連想配列を表すコレクションに使用されている。
なお、連結リスト実装であるSystem.Collections.Generic.LinkedListは、要素アクセスの計算量が O ( 1 ) {\displaystyle O(1)} ではなく O ( n ) {\displaystyle O(n)} であり、インデクサは提供されない。