以下代碼無法在C#中使用錯誤Cannot implicitly convert type 'string' to 'String'
進行編譯。無法將類型'字符串'隱式轉換爲'字符串'
void Main()
{
Console.Write("Hello".Append("Mark"));
}
public static class Ext
{
public static String Append<String>(this String str, String app)
{
return str + " " + app;
}
}
您可以通過擴展方法去除類型參數修正編譯錯誤,但我不知道爲什麼這個不能編譯因爲typeof(string) == typeof(String)
評估爲true
。
下也工作得很好:
void Main()
{
Console.Write("Hello".Append("Mark"));
}
public static class Ext
{
public static string Append<String>(this String str, string app)
{
return str + " " + app;
}
}
你爲什麼有這裏有一個類型約束''? –
2015-02-09 11:53:43
我正在寫一些使用T參數的擴展方法,但是這隻對String有意義,所以我用String替換了T,並且很驚訝地收到錯誤。它當然不需要在那裏。以下代碼編譯並運行得很好: 'void Main() { Console.Write(「Hello」.Append(「Mark」)); } 公共靜態類分機 { 公共靜態字符串追加(此字符串str,字符串app) { 返回STR + 「」 +應用; } }' –
MarkFl
2015-02-09 11:57:03
由於第一個參數'this String str'已經定義了目標類型,所以不需要擴展方法。 – helb 2015-02-09 11:57:55