有这个代码:
string abc = "123456";
要转换为 int,我应该使用 convert:
int abcInt = Convert.ToInt32(abc);
问题是,如果不是数字,我会看到返回零的异常,所以我的最终代码将如下所示:
try{ int abcInt = Convert.ToInt32(abc); }catch(Exception e){ int abcInt = 0; }
所以你看,我决定写一本书,让我成为一个对象,如果失败则返回零数字,这样可以保持最灵活的编程而没有太多垃圾代码:
int abcInt = Libs.str.safeInt(abc);
代码是:
public int safeInt(object ob)
{
if ((ob == null) || (String.IsNullOrEmpty(ob.ToString())))
return 0;
try
{
return Convert.ToInt32(
System.Text.RegularExpressions.Regex.Replace(ob.ToString(), @"@[^Ee0-9\.\,]+@i", "").
ToString(CultureInfo.InvariantCulture.NumberFormat)
);
}
catch (FormatException e)
{
return 0;
}
}
但我想更进一步,做这样的事情:
int abcInt = (safeInt)abc;
怎么做?
无法将类型“字符串”转换为“Libs.safeInt.safeInt”