İngilizce dilinde oku

Aracılığıyla paylaş


Derleyici Hatası CS0313

'type1' türü, genel tür veya 'type2' yönteminde 'parametre adı' tür parametresi olarak kullanılamaz. 'type1' null atanabilir türü 'type2' kısıtlamasını karşılamıyor. Null atanabilir türler arabirim kısıtlamalarını karşılayamaz.

Boş değer atanabilir değer türü, null atanamayan eşdeğerine eşdeğer değildir. Aşağıdaki örnekte kısıtlamayı ImplStructBaseInterface karşılar ancak Nullable<ImplStruct>ImplStruct? uygulamadığından BaseInterfacebunu yapmaz.

Bu hatayı düzeltmek için

  1. Örnek olarak aşağıdaki kodu kullanarak, bir çözüm çağrısında ilk tür bağımsız değişkeni olarak sıradan ImplStruct bir değişken belirtmektir TestMethod. Ardından return deyiminde null atanabilir sürümünü Implstruct oluşturmak için değiştirinTestMethod:

    return new Nullable<T>(t);  
    

Örnek

Aşağıdaki kod CS0313 oluşturur:

// cs0313.cs  
public interface BaseInterface { }  
public struct ImplStruct : BaseInterface { }  
  
public class TestClass  
{  
    public T? TestMethod<T, U>(T t) where T : struct, U  
    {  
        return t;  
    }  
}  
  
public class NullableTest  
{  
    public static void Run()  
    {  
  
        TestClass tc = new TestClass();  
        tc.TestMethod<ImplStruct?, BaseInterface>(new ImplStruct?()); // CS0313  
    }  
    public static void Main()  
    { }  
}  

Ayrıca bkz.