C# 中多載建構子與空值參數的解析
假設一個類別包含多個建構子:
<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>
當使用空值呼叫建構函數,例如 EffectOptions options = new EffectOptions(null);
,重載解析系統會遵循以下步驟:
1. 辨識可應用的建構子:
2. 排除不可應用的建構子:
3. 解析 params 建構子:
4. 辨識最佳可應用候選者:
在本例中,歧義出現是因為:
object[]
和 string
都被認為是「具體的」(兩者之間沒有更具體的)。 演算法細節:
以上是當傳遞空值時,C# 如何解決建構函式重載?的詳細內容。更多資訊請關注PHP中文網其他相關文章!