我正在接受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