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
990 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:

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) { }
}
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!

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