Tôi mới dùng C# và không hiểu tại sao mã sau không hoạt động.Trợ giúp với lỗi C# generics - "Loại 'T' phải là loại giá trị không thể null"
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;
}
Nó cung cấp cho các lỗi sau quá trình biên dịch:
Loại 'T' phải là một kiểu giá trị không nullable để sử dụng nó như là tham số 'T' trong các loại generic hoặc phương pháp hệ thống ' .Nullable <T> '
Lỗi trình biên dịch cung cấp cho bạn dòng định nghĩa hàm vì đó là nơi xảy ra lỗi. – SLaks