我正在接受StreamWriter的方法,它可以是字符串,也可以是空值,也可以是長度,然後將值寫入到StreamWriter中,填充爲長度。如果值爲空,我想寫空格。我想做一些類似以下簡單示例的示例,這僅用於演示目的。我可以創建一個接受空值<something>的通用函數嗎?
public void FixedWrite(StreamWriter writer, string value,
int length) {
if (value == null) value = "";
value = value.PadRight(length);
writer.Write(value);
}
public void FixedWrite<T>(StreamWriter writer, T value,
int length) where T : Nullable /* won't work of course */ {
string strVal;
if (!value.HasValue) strVal = null;
else strVal = value.Value.ToString();
FixedWrite(writer, strVal, length);
}
我可以有各種不同的基礎類型重載(他們所有日期,整型,布爾變量和小數),但我想看看我是否能得到通用版工作。有沒有辦法讓T始終是一個可爲空的類型,並且可以訪問Nullable的屬性(HasValue和Value)?或者我應該堅持使用底層類型特定的重載?
This question構成了一個類似的問題,但在我的情況下,這些值已經是可空的,我只想寫出它的值,如果它有一個空格,如果它沒有。
當然。我讓它比需要的更難。謝謝。 – 2009-09-01 18:20:13
這可以工作,但是你*仍然可以將一個可爲空的參數傳遞給泛型方法。 – 2009-09-01 18:29:41