Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh membebankan Operator Kurung Persegi dalam C#?

Bagaimanakah saya boleh membebankan Operator Kurung Persegi dalam C#?

Susan Sarandon
Susan Sarandonasal
2025-01-07 06:37:41453semak imbas

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

Melebihi Muatan Operator Kurung Segi Empat dalam C

Dalam C#, pengendali kurungan segiempat membolehkan akses tatasusunan dan pengambilan nilai kunci daripada objek seperti kamus. Walau bagaimanapun, kelas ini tidak menyokong pengendali kurungan segi empat yang lebih muatan. Dokumentasi untuk ciri ini disenaraikan di bawah sifat "Item" dalam dokumentasi C#.

Melaksanakan Pengindeks

Untuk membebankan operator kurungan segi empat sama dalam kelas anda sendiri, anda boleh mengisytiharkan pengindeks harta benda. Sintaks untuk sifat pengindeks ialah:

public type this[arglist] { get; set; }

Di mana:

  • jenis ialah jenis nilai yang dikembalikan oleh pengindeks.
  • arglist ialah koma- senarai parameter yang dipisahkan yang menentukan indeks elemen yang akan diambil atau set.

Sebagai contoh, untuk membebankan operator kurungan segi empat sama untuk tatasusunan dua dimensi, anda boleh mengisytiharkan sifat pengindeks seperti berikut:

public object this[int x, int y]
{
    get { return array[x, y]; }
    set { array[x, y] = value; }
}

Had dan Pengecualian

Adalah penting untuk ambil perhatian bahawa pengindeks dalam kelas DataGridView tidak membuang pengecualian apabila anda membekalkan koordinat tidak sah. Walau bagaimanapun, adalah mungkin untuk mengatasi tingkah laku ini dengan secara eksplisit mengendalikan pengecualian dalam pelaksanaan anda sendiri bagi sifat pengindeks.

Sebagai contoh, untuk membuang ArgumentOutOfRangeException jika koordinat yang dibekalkan tidak sah, anda boleh melaksanakan sifat pengindeks seperti berikut :

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;
    }
}

Atas ialah kandungan terperinci Bagaimanakah saya boleh membebankan Operator Kurung Persegi dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn