Следующий код не может скомпилироваться с ошибкой Cannot implicitly convert type 'string' to 'String'
в C#.Невозможно неявно преобразовать тип 'string' в '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;
}
}
Почему у вас ограничение типа '' здесь? –
Я писал несколько методов расширения, которые использовали параметр T, но это только имело смысл для String, поэтому я заменил T на String и был удивлен, получив ошибку. Конечно, этого не должно быть. Следующий код компилируется и работает просто отлично: 'void Main() { Console.Write (« Hello ».Append (« Mark »)); } общественный статический класс Ext { общественности статической строки Append (это строка, ул строка приложение) { возвращение ул + "" + приложение; } } ' –
MarkFl
Нет необходимости создавать методы расширения, поскольку первый аргумент' this String str' уже определяет тип цели. – helb