Joh*_*ant 1 .net generics nullable
我正在研究一种方法,它接受StreamWriter,字符串或可空值,以及长度,并将值写入StreamWriter,填充到长度.如果值为null,我想写空格.我想做一些类似下面的简化示例,仅用于演示目的.
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);
}
Run Code Online (Sandbox Code Playgroud)
我可以为所有不同的底层类型(它们都是日期,整数,粗体和小数)进行重载,但我想知道我是否可以使通用版本正常工作.有没有办法让T永远是一个Nullable <>类型,并访问Nullable <>属性(HasValue和Value)?或者我应该坚持基础类型特定的重载?
这个问题提出了类似的问题,但在我的情况下,值已经是nullables,我只想写出值,如果它有一个,如果没有,则写出空格.
And*_*are 12
尝试这样的事情:
public void FixedWrite<T>(StreamWriter writer, Nullable<T> value, int length)
where T : struct
{
string strVal;
if (!value.HasValue) strVal = null;
else strVal = value.HasValue.ToString();
FixedWrite(writer, strVal, length);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
839 次 |
| 最近记录: |