针对WindowsCE时缺少TryParse()的最佳解决方法是什么?

时间:2013-11-26 17:47:46

标签: c# casting windows-ce tryparse target-platform

在将一些代码从我的测试项目转移到面向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!");
}

4 个答案:

答案 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;
}