Mar*_*kFl 1 c# types compiler-errors
以下代码无法使用Cannot implicitly convert type 'string' to 'String'C#中的错误进行编译.
void Main()
{
Console.Write("Hello".Append("Mark"));
}
public static class Ext
{
public static String Append<String>(this String str, String app)
{
return str + " " + app;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过扩展方法去除类型参数修正编译错误,但我不知道为什么这个不能编译因为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;
}
}
Run Code Online (Sandbox Code Playgroud)
该Append<String>不是一个类型,它是一个类型参数的名称.它与使用相同,T除非你现在命名它String.
显然这会产生问题,因为现在您尝试将名称的泛型类型连接String到string文字.
你可以完全省略这个:
public static String Append(this String str, String app)
{
return str + " " + app;
}
Run Code Online (Sandbox Code Playgroud)
第二种方法的工作原因是因为您现在使用string它可以消除名为type参数的歧义String.
这意味着您的串联包含名称的泛型类型String,它具有实际类型string,string文字和类型变量string.这可以再次编译,但它很难看,你永远不应该这样做.
| 归档时间: |
|
| 查看次数: |
1235 次 |
| 最近记录: |