Vs2005 中用TryParse来检验和转换数据类型的方法
coding时,我们经常会出现对传入的数据进行类型合法性检测,及做相应转换。在以往,多半是通过正则表达式来检测的,有人也使用try{}catch{}来完成。
在vs2005中 又提供了一种新的方法来完成对应类型的检测及转换。vs2005中每种类型都提供了TryParse方法,该方法的格式一般为bool TryParse(value,out resultValue)。value 就是将要转换的数据,resultValue是转换后的值。该方法若成功,resultValue中将是转换后的值,同时方法返回true;若失败,resultValue将是将要转换的类型的默认值,同时方法返回false。下面是个具体的例子:
#region "检测数据类型"
if (TempValue != "")
{
switch (DataType)
{
case DataType.Int:
int IntTempValue = 0;
if (!int.TryParse(TempValue, out IntTempValue))
EventMessage.MessageBox(2, "输入数据格式验证失败", string.Format("{0}字段值:{1}数据类型必需为Int型!", InputName, TempValue), Icon_Type.Error, "history.back();", UrlType.JavaScript);
return IntTempValue;
case DataType.Dat:
DateTime DateTempValue = DateTime.MinValue;
if (!DateTime.TryParse(TempValue, out DateTempValue))
EventMessage.MessageBox(2, "输入数据格式验证失败", string.Format("{0}字段值:{1}数据类型必需为日期型!", InputName, TempValue), Icon_Type.Error, "history.back();", UrlType.JavaScript);
return DateTempValue;
case DataType.Long:
long LongTempValue = long.MinValue;
if (!long.TryParse(TempValue, out LongTempValue))
EventMessage.MessageBox(2, "输入数据格式验证失败", string.Format("{0}字段值:{1}数据类型必需为Log型!", InputName, TempValue), Icon_Type.Error, "history.back();", UrlType.JavaScript);
return LongTempValue;
case DataType.Double:
double DoubleTempValue = double.MinValue;
if (!double.TryParse(TempValue, out DoubleTempValue))
EventMessage.MessageBox(2, "输入数据格式验证失败", string.Format("{0}字段值:{1}数据类型必需为Double型!", InputName, TempValue), Icon_Type.Error, "history.back();", UrlType.JavaScript);
return DoubleTempValue;
case DataType.CharAndNum:
if (!CheckRegEx(TempValue, "^[A-Za-z0-9]+$"))
EventMessage.MessageBox(2, "输入数据格式验证失败", string.Format("{0}字段值:{1}数据类型必需为英文或数字!", InputName, TempValue), Icon_Type.Error, "history.back();", UrlType.JavaScript);
return TempValue;
case DataType.CharAndNumAndChinese:
if (!CheckRegEx(TempValue, "^[A-Za-z0-9\u00A1-\u2999\u3001-\uFFFD]+$"))
EventMessage.MessageBox(2, "输入数据格式验证失败", string.Format("{0}字段值:{1}数据类型必需为英文或数字或中文!", InputName, TempValue), Icon_Type.Error, "history.back();", UrlType.JavaScript);
return TempValue;
case DataType.Email:
if (!CheckRegEx(TempValue, "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"))
EventMessage.MessageBox(2, "输入数据格式验证失败", string.Format("{0}字段值:{1}数据类型必需为邮件地址!", InputName, TempValue), Icon_Type.Error, "history.back();", UrlType.JavaScript);
return TempValue;
default:
return TempValue;
}
}
else
{
switch (DataType)
{
case DataType.Int:
return 0;
case DataType.Dat:
return DateTime.MaxValue;
case DataType.Long:
return long.MinValue;
case DataType.Double:
return 0.0f;
default:
return TempValue;
}
}
#endregion