Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Błąd kompilatora CS0449

Ograniczenie "class" lub "struct" musi pochodzić przed wszelkimi innymi ograniczeniami

Ograniczenia dotyczące parametru typu typu lub metody muszą wystąpić w określonej kolejności: class lub struct muszą być najpierw, jeśli istnieją, a następnie wszelkie ograniczenia interfejsu, a na koniec wszelkie ograniczenia konstruktora. Ten błąd jest spowodowany tym, że class ograniczenie lub struct nie jest wyświetlane jako pierwsze. Aby rozwiązać ten błąd, zmień kolejność klauzul ograniczeń.

Przykład

Poniższy przykład generuje plik CS0449.

// CS0449.cs  
// compile with: /target:library  
interface I {}  
public class C4
{  
   public void F1<T>() where T : class, struct, I {}   // CS0449  
   public void F2<T>() where T : I, struct {}   // CS0449  
   public void F3<T>() where T : I, class {}   // CS0449  
  
   // OK  
   public void F4<T>() where T : class {}  
   public void F5<T>() where T : struct {}  
   public void F6<T>() where T : I {}  
}