Прочитать на английском

Поделиться через


Ошибка компилятора CS0080

Ограничения не разрешены в объявлениях, не являющихся универсальными.

Обнаруженный синтаксис может использоваться только в универсальном объявлении для применения ограничений к параметру типа. Дополнительные сведения см. в статье Универсальные шаблоны.

При компиляции следующего примера возникнет ошибка CS0080, так как MyClass не является универсальным классом, а Foo — универсальным методом.

namespace MyNamespace  
{  
    public class MyClass where MyClass : System.IDisposable // CS0080    //the following line shows an example of correct syntax  
    //public class MyClass<T> where T : System.IDisposable  
    {  
        public void Foo() where Foo : new() // CS0080  
        //the following line shows an example of correct syntax  
        //public void Foo<U>() where U : struct  
        {  
        }  
    }  
  
    public class Program  
    {  
        public static void Main()  
        {  
        }  
    }  
}