我alredy有這樣的:可空<T>作爲參數
public static object GetDBValue(object ObjectEvaluated)
{
if (ObjectEvaluated == null)
return DBNull.Value;
else
return ObjectEvaluated;
}
used like:
List<SqlParameter> Params = new List<SqlParameter>();
Params.Add(new SqlParameter("@EntityType", GetDBValue(EntityType)));
現在我想保持相同的接口,但延長,爲可空
public static object GetDBValue(int? ObjectEvaluated)
{
if (ObjectEvaluated.HasValue)
return ObjectEvaluated.Value;
else
return DBNull.Value;
}
public static object GetDBValue(DateTime? ObjectEvaluated)
{...}
使用它,但我只想要1個功能GetDBValue爲空的。我該怎麼做,保持原樣的電話?這可能嗎?
我可以使它像工作:
public static object GetDBValue<T>(Nullable<T> ObjectEvaluated) where T : struct
{
if (ObjectEvaluated.HasValue)
return ObjectEvaluated.Value;
else
return DBNull.Value;
}
但電話變爲:
Params.Add(new SqlParameter("@EntityID ", GetDBValue<int>(EntityID)));
問題是調用不會GetDBValue(x),但GetDBValue(x)!這就是我的問題的原因,我不想讓n版本的函數保持相同的調用,我認爲這是不可能的,但也許有人... –
user331940
2010-05-04 02:29:57
@ferch:不,那不是正確。 C#在泛型上進行類型推斷。該代碼將在方法調用中不帶''進行編譯。它將完全按照這個答案所寫的那樣工作。 –
Aaronaught
2010-05-04 14:29:51
對不起Aaronaught,你說的沒錯。我第一次嘗試時遇到了錯誤,並且出現了編譯錯誤。它起到魅力的作用。 我不縮短如果因爲我仍然需要的值不空和不可空。 謝謝 – user331940 2010-05-05 00:00:01