1

所以我在 c# 中创建了一个自定义的 int.tryparse 方法,试图让事情看起来更简单、更清晰。这是方法:

    public static int? BoolIntParse(string number)
    {
        int temp;
        if (int.TryParse(number, out temp))
            return temp;
        else
            return null;
    }

现在,我想尝试以这种方式使用它:

if(int? someNumber = BoolIntParse(someString))
{
    //do some stuff if its a number
}
else
   //throw some error 

这似乎不起作用。我还尝试在条件之前分配值,例如:

int? someNumber = BoolIntParse(someString);
if(someNumber)
{
    //do some stuff if its a number
}
else
   //throw some error 

我收到错误消息Cannot implicitely convert type int? to bool

所以这不是合法的c#。这是为 nullable int 设计的(这种情况)还是我没有正确地做到这一点?我对 c# 比较陌生。

4

3 回答 3

8

你想检查是否someNumber.HasValue. 那应该在你的条件下。

if (someNumber.HasValue)

或作为替代方案,@BrokenGlass 提到:

if (someNumber != null)

于 2012-06-13T21:18:48.633 回答
2

为什么不使用TryParse自身提供的条件逻辑呢?

int someNumber;
if (int.TryParse(number, out someNumber))
    //do some stuff if its a number
else
    //throw some error 

编辑:另外,如果您不需要抛出自定义异常,您可以依靠该Parse方法为您抛出异常:

int someNumber = int.Parse(number);  //throws error if invalid
//do some stuff if its a number
于 2012-06-13T21:20:43.110 回答
0

someNumber.equals(BoolIntParse(someString))由于您正在处理对象,因此您将需要使用。下面是代码:

string someString = "2";
int? someNumber = 2;
if(someNumber.Equals(BoolIntParse(someString))) {
    Console.Write("done");
}

那应该运行。

于 2012-06-13T21:26:49.613 回答