9 ŞUBAT 2010, Salı
C# ile jenerik hata " yardım;türü 'T' null olmayan bir değer olmalıdır türü"
C yeniyim# ve aşağıdaki kodu çalışmıyor anlamıyorum.
public static Nullable<T> CoalesceMax<T>(Nullable<T> a, Nullable<T> b) where T : IComparable
{
if (a.HasValue && b.HasValue)
return a.Value.CompareTo(b.Value) < 0 ? b : a;
else if (a.HasValue)
return a;
else
return b;
}
// Sample usage:
public DateTime? CalculateDate(DataRow row)
{
DateTime? result = null;
if (!(row["EXPIRATION_DATE"] is DBNull))
result = DateTime.Parse((string)row["EXPIRATION_DATE"]);
if (!(row["SHIPPING_DATE"] is DBNull))
result = CoalesceMax(
result
DateTime.Parse((string)row["SHIPPING_DATE"]).AddYears(1));
// etc.
return result;
}
Derleme sırasında aşağıdaki hata verir:
Yazın bunu kullanmak için null olmayan bir değer türü olmalıdır parametre 'T' genel tür ya da yöntem 'Sistemi gibi.T Null<T>'
CEVAP
9 ŞUBAT 2010, Salı
Bir T eklemek gerekir : yapı görünümünde
public static Nullable<T> CoalesceMax<T>
(Nullable<T> a, Nullable<T> b) where T : struct, IComparable
Nullable<T>
ne demek, şimdiden kısıtlama Nullable<T>
tarafından gerekli olmadığını fark etmeye çalış kendini. yoksa C# Diğer bir deyişle, aramayı deneyebilirsiniz:
CoalesceMax<string>(...)
Nullable<string>
geçerli değil gibi mantıklı olmaz.
Bunu Paylaş:
Ben&; Olası 'null'" ile ...
ASP.Net hata: &; türü 'foo' ...
Hata ayıklama iletisi "Kaynak diğ...
Bir arabirim belirlemek için nasıl{} d...
Krom söylüyor "Kaynak komut olara...