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ı ImplStruct
BaseInterface
karşılar ancak Nullable<ImplStruct>
ImplStruct?
uygulamadığından BaseInterface
bunu yapmaz.
Ö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 belirtmektirTestMethod
. Ardından return deyiminde null atanabilir sürümünüImplstruct
oluşturmak için değiştirinTestMethod
:return new Nullable<T>(t);
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()
{ }
}
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: