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
Lepaskan: 2025-01-07 06:37:41
asal
464 orang telah melayarinya

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; }
Salin selepas log masuk

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; }
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan