在将一些代码从我的测试项目转移到面向Windows CE的“真实”项目时,一些代码在IDE中变得尴尬并变为红色,即“TryParse()”。
由于缺少......马蹄铁,战斗失败了;希望缺乏TryParse()不会导致像医疗保健一样的电子灾难;然而,有一个更好的方法来重写TryParseless解析器的TryParse():
int recCount = 0;
string s = "42";
try {
recCount = Int32.Parse(s);
}
catch {
MessageBox.Show("That was not an int! Consider this a lint-like hint!");
}
答案 0 :(得分:3)
考虑s
是字符串值,您无法将其强制转换为int
。如果int.TryParse
不可用,那么您可以创建自己的方法来返回bool。类似的东西:
public static class MyIntConversion
{
public static bool MyTryParse(object parameter, out int value)
{
value = 0;
try
{
value = Convert.ToInt32(parameter);
return true;
}
catch
{
return false;
}
}
}
然后使用它:
int temp;
if (!MyIntConversion.MyTryParse("123", out temp))
{
MessageBox.Show("That was not an int! Consider this a lint-like hint!");
}
int.TryParse
在内部使用try-catch
进行解析,并以类似的方式实现。 击>
答案 1 :(得分:2)
public bool TryParseInt32( this string str, out int result )
{
result = default(int);
try
{
result = Int32.Parse( str );
}
catch
{
return false;
}
return true;
}
用法:
int result;
string str = "1234";
if( str.TryParseInt32( out result ) )
{
}
答案 2 :(得分:1)
我假设s
是一个字符串。如果是这样,您的代码将无法正常工作。但是应该使用以下代码:
int recCount = 0;
try {
recCount = Int32.Parse(s);
}
catch {
MessageBox.Show("That was not an int! Consider this a lint-like hint!");
}
答案 3 :(得分:1)
您可以使用正则表达式。
public bool IsNumber(string text)
{
Regex reg = new Regex("^[0-9]+$");
bool onlyNumbers = reg.IsMatch(text);
return onlyNumbers;
}