저는 C #을 처음 사용하고 다음 코드가 작동하지 않는 이유를 이해하지 못합니다.
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;
}
컴파일 중에 다음 오류가 발생합니다.
제네릭 형식 또는 메서드 'System.Nullable <T>'에서 매개 변수 'T'로 사용하려면 'T'형식이 nullable이 아닌 값 형식이어야합니다.