1
我創建了一個樣機類ilustrate問題:超載分辨率在通用構造
public class Anything<T>
{
/// <summary>
/// Generic typed constructor
/// </summary>
/// <param name="param1"></param>
public Anything(T param1)
{
Console.WriteLine("I'm generic typed constructor");
}
/// <summary>
/// String typed constructor
/// </summary>
/// <param name="param1"></param>
public Anything(string param1)
{
Console.WriteLine("I'm string typed constructor");
}
}
請告訴我,如果我建字符串對象的什麼嗎?沒有辦法區分這兩個構造函數。使用相同數量的參數定義另一個構造函數是一種糟糕的做法嗎?
其實有辦法。如果可能,編譯器將使用非泛型重載。所以,如果有關於字符串的特殊情況,這不是一個壞習慣 –
你的問題到底是什麼?這是如何工作的(閱讀重載決議,看重複),哪一個會被調用(運行它)還是這是一個不好的做法(基於意見)?如果您提供真實的用例,則可以顯示替代方案。這個用例將解釋爲什麼你認爲你首先需要一個字符串重載,並從中解釋如何減少歧義。再次看到重複。 :) – CodeCaster