Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Параметр типа "параметр типа" не может использоваться с оператором "as", так как он не имеет ни ограничений типа класса, ни ограничения "class"
Эта ошибка возникает в том случае, если универсальный тип использует оператор as, но при этом не имеет ограничений типа класса. Оператор as
можно использовать только со ссылочными типами и типами значений, допускающими значение NULL, поэтому необходимо определить ограничение для параметра типа, гарантирующее, что он не будет иметь тип значения. Чтобы избежать этой ошибки, используйте ограничение типа класса или ограничение ссылочного типа.
Это связано с тем, что оператор as
может возвращать значение null
, недопустимое для типа значения, и параметр типа должен обрабатываться как тип значения, кроме случаев, когда задано ограничение типа класса или ограничение ссылочного типа.
В следующем примере возникает ошибка CS0413.
// CS0413.cs
// compile with: /target:library
class A {}
class B : A {}
class CMain
{
A a = null;
public void G<T>()
{
a = new A();
System.Console.WriteLine (a as T); // CS0413
}
// OK
public void H<T>() where T : A
{
a = new A();
System.Console.WriteLine (a as T);
}
}
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: