将 int.TryParse 与可为空的 int 一起使用 [重复]
Posted
技术标签:
【中文标题】将 int.TryParse 与可为空的 int 一起使用 [重复]【英文标题】:Using int.TryParse with nullable int [duplicate] 【发布时间】:2017-12-09 07:08:33 【问题描述】:如何将int.TryParse
与可为空的int 一起使用?
我正在尝试执行类似以下的操作,但显然无法编译。
int? nr1 = int.TryParse(str1, out nr1) ? nr1 : null;
实现它的正确方法是什么?
【问题讨论】:
【参考方案1】:因为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?);
【讨论】:
【参考方案2】:int.tryParse
将更改引用的out
变量,并返回boolean
,如果传递的参数可以解析为整数,则为true
。
你追求的是这样的:
int? int1;
int tempVal;
if (!int.TryParse(str1, out tempVal))
int1 = null;
else
int1 = tempVal;
【讨论】:
这不会编译。 @Lee 意识到tryParse
需要int
为时已晚
“修复”它。伙计,这看起来很丑以上是关于将 int.TryParse 与可为空的 int 一起使用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Django unique_together 与可为空的 ForeignKey