Parametr typu "<typeparametername1>" musi mieć ograniczenie "New" lub "Structure", aby spełnić ograniczenie "New" dla parametru typu "<typeparametername2>"

Instrukcja konstruuje typ ogólny przekazujący parametr typu, który nie jest ograniczony do spełnienia New ograniczenia.

Ograniczenie New oznacza, że argument typu dostarczony do tego parametru typu musi uwidocznić konstruktor bez parametrów dostępny dla kodu, który tworzy z niego obiekty. Wszystkie typy wartości mają konstruktory bez parametrów, ale nie wszystkie typy odwołań. W związku z tym Structure ograniczenie spełnia New ograniczenie, ale Class ograniczenie, lub nazwa klasy lub interfejsu, nie.

Następujące instrukcje mogą generować ten błąd.

Public Class c1(Of t As New)
End Class
Public Class c2(Of u)
    Public testObject As New c1(Of u)
End Class

Gdy klasa c2 tworzy obiekt z c1klasy , parametr u typu nie spełnia wymagań ograniczenia dla parametru New ttypu .

Identyfikator błędu: BC32084

Aby poprawić ten błąd

  • Jeśli parametr typu, który ma zostać przekazany do typu ogólnego, może spełniać Structure ograniczenie lub New , dodaj odpowiednie ograniczenie do jego definicji.

    Public Class c2(Of u As Structure)
    
  • Jeśli parametr typu nie może spełnić Structure wymagań lub New ograniczenia, nie przekazuj go do typu ogólnego. Musisz przekazać coś innego jako argument typu.

Zobacz też