Analyse mehrfach geladener Konstruktoren und Nullparameter in C#
Angenommen, eine Klasse enthält mehrere Konstruktoren:
<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>
Wenn Sie einen Konstruktor mit einem Nullwert aufrufen, z. B. EffectOptions options = new EffectOptions(null);
, führt das Überlastungsauflösungssystem die folgenden Schritte aus:
1. Identifizieren Sie anwendbare Konstruktoren:
2. Nicht anwendbare Konstruktoren ausschließen:
3. Parse-Parameter-Konstruktor:
4. Identifizieren Sie die am besten geeigneten Kandidaten:
In diesem Fall entsteht die Mehrdeutigkeit, weil:
object[]
und string
gelten beide als „spezifisch“ (es gibt keine spezifischere Angabe dazwischen). Details zum Algorithmus:
Das obige ist der detaillierte Inhalt vonWie löst C# überladene Konstruktoren auf, wenn ein Nullwert übergeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!