我有这个代码检查用户是否在文本框中输入了任何内容,但我不知道equivelant是否检查其他文本框是int和decimal。
public bool IsValid
{
get
{
return (!String.IsNullOrWhiteSpace(StreetName) && !String.IsNullOrWhiteSpace(City) && HouseNumber != null );
}
}
当然Housenumber!= null部分有一个波浪形的下划线。 HouseNumber是一个小数,我需要检查一些是int,所以我可以用什么代替HouseNumber!= null?
如果我能做到这一点真是太棒了
public bool IsValid
{
get
{
return (!String.IsNullOrWhiteSpace(StreetName) && !String.IsNullOrWhiteSpace(City) && !Decimal.IsNullOrWhiteSpace(HouseNumber) );
}
}
答案 0 :(得分:1)
HouseNumber
永远不会是null
,因为它是值类型。 default(decimal)
是0
。因此,如果0
始终是无效数字,请检查该数字。如果它是有效数字,您可以将其初始化为无效的数字,即
class Whatever
{
private const decimal InvalidHouseNum = decimal.MinValue;
public Whatever(...)
{
// ...
HouseNumber = InvalidHouseNum;
}
public bool IsValid
{
get
{
return (!String.IsNullOrWhiteSpace(StreetName) && !String.IsNullOrWhiteSpace(City) && HouseNumber != InvalidHouseNum );
}
}
}
如果任何号码有效,请使用可以为空的小数,即
private decimal? HouseNumber { get; set; }
现在它默认为null。
撇开;是decimal
真的是门牌号码的最佳选择吗?门牌号码可以有一小部分吗?
编辑:请阅读您的评论。如果HouseNumber
实际上是一个字符串(不是您在问题中所说的decimal
),那么请使用TryParse
。当然,您可能应该首先使用不允许无效值的控件。
答案 1 :(得分:1)
以下是几种方法:
public bool isDecimal(string s)
{
Decimal d;
return Decimal.TryParse(s, out d);
}
public bool isInt(string s)
{
int i;
return Int32.TryParse(s, out i);
}
修改强>
public bool isNullWhiteSpaceAndNotDecimal(string s)
{
if (String.IsNullOrWhiteSpace(s))
{
return true;
}
Decimal d;
return !Decimal.TryParse(s, out d);
}
public bool isNullWhiteSpaceAndNotInt(string s)
{
if (String.IsNullOrWhiteSpace(s))
{
return true;
}
int i;
return !Int32.TryParse(s, out i);
}
这更像是你想要的!Decimal.IsNullOrWhiteSpace(HouseNumber);
答案 2 :(得分:0)
实际上,出于某种原因,我的文本框中填充了0,所以这最终为我工作,其他答案不起作用。
public bool IsValid
{
get
{
return (!String.IsNullOrWhiteSpace(StreetName) && !String.IsNullOrWhiteSpace(City) && HouseNumber != 0 && ZipCode != 0 && Price != 0);
}
}
我仍然是C#的新手所以我没想到我也可能只是添加一个.ToString(),如果任何小数或int文本框都是空的,如下所示。它摆脱了红色波浪形下划线,但由于文本框有0个,我使用了上面的版本并且它起作用了。下面的答案是我当时正在寻找的。 p>
public bool IsValid
{
get
{
return (!String.IsNullOrWhiteSpace(StreetName) && !String.IsNullOrWhiteSpace(City) && !String.IsNullOrWhiteSpace(HouseNumber.ToString) && !String.IsNullOrWhiteSpace(ZipCode.ToString) && !String.IsNullOrWhiteSpace(Price.ToString) );
}
}