ホームページ > バックエンド開発 > C++ > C# で角括弧演算子をオーバーロードするにはどうすればよいですか?

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

Susan Sarandon
リリース: 2025-01-07 06:37:41
オリジナル
427 人が閲覧しました

How Can I Overload the Square-Bracket Operator in C#?

C での角括弧演算子のオーバーロード

C# では、角括弧演算子を使用して、配列アクセスと辞書のようなオブジェクトからのキー値の取得が可能になります。ただし、これらのクラスは、角括弧演算子のオーバーロードをネイティブにサポートしません。この機能のドキュメントは、C# ドキュメントの「Item」プロパティにリストされています。

インデクサーの実装

独自のクラスで角括弧演算子をオーバーロードするには、インデクサーを宣言できます。財産。インデクサー プロパティの構文は次のとおりです。

public type this[arglist] { get; set; }
ログイン後にコピー

  • type は、インデクサーが返す値のタイプです。
  • arglist はカンマです。取得する要素のインデックスを指定するパラメータの区切られたリスト、またはset.

たとえば、2 次元配列の角かっこ演算子をオーバーロードするには、次のようにインデクサー プロパティを宣言できます。

public object this[int x, int y]
{
    get { return array[x, y]; }
    set { array[x, y] = value; }
}
ログイン後にコピー

制限事項と例外

無効な座標を指定した場合、DataGridView クラスのインデクサーは例外をスローしないことに注意することが重要です。ただし、インデクサー プロパティの独自の実装で例外を明示的に処理することで、この動作をオーバーライドすることは可能です。

たとえば、指定された座標が無効な場合に ArgumentOutOfRangeException をスローするには、次のようにインデクサー プロパティを実装します。 :

public object this[int x, int y]
{
    get
    {
        if (x < 0 || x >= width)
        {
            throw new ArgumentOutOfRangeException("x");
        }
        if (y < 0 || y >= height)
        {
            throw new ArgumentOutOfRangeException("y");
        }

        return array[x, y];
    }

    set
    {
        if (x < 0 || x >= width)
        {
            throw new ArgumentOutOfRangeException("x");
        }
        if (y < 0 || y >= height)
        {
            throw new ArgumentOutOfRangeException("y");
        }

        array[x, y] = value;
    }
}
ログイン後にコピー

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

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