使用int.TryParse和nullable int

时间:2017-07-05 14:34:44

标签: c#

如何将int.TryParse与nullable int一起使用?

我正在尝试做类似以下的事情,显然没有编译。

int? nr1 = int.TryParse(str1, out nr1) ? nr1 : null;

实现它的正确方法是什么?

2 个答案:

答案 0 :(得分:12)

因为out必须是int,所以您需要以下内容:

int temp;
int? nr1 = int.TryParse(str1, out temp) ? temp : default(int?);

请注意,我还使用default(int?)代替null,因为条件类型不会起作用。 ? (int?)temp : null? temp : (int?)null也可以解决这个问题。

从C#7(VS Studio 2017)开始,您可以内联temp

的声明
int? nr1 = int.TryParse(str1, out int temp) ? temp : default(int?);

答案 1 :(得分:5)

int.tryParse将更改引用的out变量,并返回boolean,如果传递的参数可以解析为整数,则返回true

你是这样的:

int? int1;
int tempVal;
if (!int.TryParse(str1, out tempVal))
{
    int1 = null;
}
else
{
    int1 = tempVal;
}