如何正确地将此代码重写为万无一失与各种类型的输入参数?例如,如果输入参数是DateTime
的有效实例,则此代码将失败。我刚刚想出来了 - 今天错误地返回了false
。
public override bool IsValid(object value)
{
string field = value as string;
if (String.IsNullOrEmpty(field))
return false;
return true;
}
如果没有多个if语句(对于每个可能的值),这将是否可行 类型,甚至是一些引用类型,如字符串)。
编辑:哦,当然,要求对象不是null或空格(因此它必须是可转换的或可解析为字符串,我猜)。
答案 0 :(得分:4)
您对as
的使用似乎不典型且不必要地模糊不清。如果您的目标是在对象为null或为空时返回false,请改为使用此代码:
public override bool IsValid(object value)
{
if (value == null || string.IsNullOrEmpty(value.ToString()))
return false;
return true;
}
如果您正在使用.NET 4并且想要检查空格而不仅仅是空字符串,则新string.IsNullOrWhiteSpace()
值得查看而不是string.IsNullOrEmpty()
。
答案 1 :(得分:2)
为什么不使用value.ToString()
? [空检后]
public override bool IsValid(object value)
{
if(value==null)
return false;
string field = value.Tostring();
if (String.IsNullOrEmpty(field))
return false;
return true;
}
答案 2 :(得分:0)
任何对象都可以转换为字符串,因为它具有ToString方法。检查引用是否为null,然后将其转换为字符串并检查长度:
public override bool IsValid(object value) {
return value != null && value.ToString().Length > 0;
}