16 EKİM 2008, PERŞEMBE
Genel bir parametre olarak yazın mümkün olabilecek mi?
Böyle bir şey yapmak istiyorum :
myYear = record.GetValueOrNull<int?>("myYear"),
Genel parametre olarak null türü dikkat edin.
İşlevi benim ilk denemem boş dönebilir, GetValueOrNull beri oldu bu :
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : class
{
object columnValue = reader[columnName];
if (!(columnValue is DBNull))
{
return (T)columnValue;
}
return null;
}
Ama aldığım hata şu an
Türü 'int?' 'T' genel tür ya da yöntem . parametre olarak kullanmak için bir başvuru türü olmalıdır
Doğru! Null olabilecek bir yapı. Yapı kısıtlaması ve yan etkisi boş artık geri dönüş yok) sınıf kısıtlaması değiştirmeyi denedim:
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
Şimdi bu atama
myYear = record.GetValueOrNull<int?>("myYear");
Aşağıdaki hata veriyor
Türü 'int?' 'T' genel tür ya da yöntem . parametre olarak kullanmak için null olmayan bir değer türü olmalıdır
Tüm mevcut genel bir parametre olarak null bir türünü belirleyen?
CEVAP
16 EKİM 2008, PERŞEMBE
Return Null olabilecek tür değiştirme ve sigara null parametresi yöntemini çağırın
static void Main(string[] args)
{
int? i = GetValueOrNull<int>(null, string.Empty);
}
public static Nullable<T> GetValueOrNull<T>(DbDataRecord reader, string columnName) where T : struct
{
object columnValue = reader[columnName];
if (!(columnValue is DBNull))
return (T)columnValue;
return null;
}
Bunu Paylaş:
Oluşturulmuş Bir Sistem Başarılı.Bir Y...
&Quot;T genel Bir dizi varargs bir par...
Bu tip 'genel tür parametre olara...
Bu tip 'T' genel tür veya yö...
Türü kesin olarak belirtilmiş olan par...