Rumah > pembangunan bahagian belakang > C++ > Bagaimana C# Menyelesaikan Pembina Terlebih Apabila Nilai Null Diluluskan?

Bagaimana C# Menyelesaikan Pembina Terlebih Apabila Nilai Null Diluluskan?

DDD
Lepaskan: 2025-01-16 15:18:09
asal
920 orang telah melayarinya

How Does C# Resolve Overloaded Constructors When a Null Value is Passed?

Analisis pembina berbilang dimuatkan dan parameter nol dalam C#

Andaikan kelas mengandungi berbilang pembina:

<code class="language-csharp">public class EffectOptions
{
    public EffectOptions(params object[] options) { }

    public EffectOptions(IEnumerable<object> options) { }

    public EffectOptions(string name) { }

    public EffectOptions(object owner) { }

    public EffectOptions(int count) { }

    public EffectOptions(Point point) { }
}</code>
Salin selepas log masuk

Apabila memanggil pembina dengan nilai nol, seperti EffectOptions options = new EffectOptions(null);, sistem resolusi beban lampau akan mengikut langkah berikut:

1. Kenal pasti pembina yang berkenaan:

  • Mengenal pasti semua pembina yang boleh diakses.

2. Kecualikan pembina yang tidak berkenaan:

  • Padamkan mana-mana pembina yang parameter formalnya tidak mempunyai parameter sebenar yang sepadan atau parameter sebenar yang tidak boleh ditukar secara tersirat kepada jenis parameter formal.

3. Parse params constructor:

  • Jika pembina "params" digunakan dalam kedua-dua bentuk dikembangkan dan tidak dikembangkan, buang bentuk dikembangkan.

4. Kenal pasti calon terbaik yang boleh digunakan:

  • "Lebih spesifik" adalah lebih baik daripada "kurang spesifik".
  • Mulakan dengan calon yang paling kurang spesifik dan hapuskan calon yang kurang spesifik secara beransur-ansur sehingga hanya tinggal satu calon "paling spesifik".

Dalam kes ini, kesamaran timbul kerana:

  • object[] dan string kedua-duanya dianggap "khusus" (tiada lebih khusus di antaranya).

Butiran algoritma:

  • Algoritma sebenar adalah sangat kompleks.
  • Walau bagaimanapun, prinsip umum ialah yang lebih khusus diutamakan daripada yang kurang spesifik.

Atas ialah kandungan terperinci Bagaimana C# Menyelesaikan Pembina Terlebih Apabila Nilai Null Diluluskan?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan