Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengembalikan Nilai dengan Selamat daripada Kaedah Generik dalam C#?

Bagaimanakah Saya Boleh Mengembalikan Nilai dengan Selamat daripada Kaedah Generik dalam C#?

Linda Hamilton
Lepaskan: 2025-01-09 17:17:40
asal
431 orang telah melayarinya

How Can I Safely Return Values from Generic Methods in C#?

Pemprosesan nilai pulangan kaedah generik C#

Dalam C#, apabila mentakrifkan kaedah generik, jika parameter jenis T ialah jenis nilai (seperti int atau struktur), mengembalikan null akan menyebabkan ralat penyusunan, kerana null tidak boleh diberikan kepada jenis nilai.

Penyelesaian

Terdapat beberapa cara untuk menyelesaikan masalah ini:

  • Kembalikan nilai lalai: Gunakan default(T) untuk mengembalikan nilai lalai parameter jenis T. Untuk jenis rujukan, null dikembalikan untuk integer, sifar dikembalikan, dan seterusnya.
  • Kekangan T untuk menjadi jenis rujukan: Gunakan kekangan where T : class untuk mengehadkan parameter jenis T kepada jenis rujukan. Dengan cara ini null boleh dikembalikan tanpa ralat.
  • Kekangan T menjadi jenis nilai yang tidak boleh dibatalkan: Jika anda tahu bahawa T tidak akan menjadi jenis nilai yang boleh dibatalkan, anda boleh menggunakan kekangan where T : struct dan mengembalikan nol daripada kaedah dengan pulangan jenis T?. Ini mewakili nilai nol jenis nilai bukan nol.

Contoh:

<code class="language-csharp">static T FindThing<T>(IList collection, int id) where T : IThing, new()
{
    foreach (T thing in collection)
    {
        if (thing.Id == id)
            return thing;
    }
    return default(T); // 返回类型T的默认值
}</code>
Salin selepas log masuk

Pilih kaedah yang paling sesuai dengan keperluan khusus anda, dan pastikan nilai pulangan konsisten dengan jenis dan kebolehbatalan yang dijangkakan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Nilai dengan Selamat daripada Kaedah Generik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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