我是C#的新手,不明白爲什麼下面的代碼不起作用。幫助C#泛型錯誤 - 「類型'T'必須是非空值類型」
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;
}
它給編譯期間以下錯誤:
類型「T」必須是爲了在通用類型或方法「系統使用它作爲參數「T」的非空值類型.Nullable <牛逼>「
編譯器錯誤爲您提供了函數定義的行,因爲這是錯誤所在。 – SLaks 2010-02-09 16:31:17