Gre*_*reg 3 c# asp.net asp.net-mvc webforms
我有一个包含特定整数值的Session,它们使用给定的控件进行索引.通常,以下方法可以正常工作:
int value;
int.TryParse(Session["Key"].ToString(), out value);
Run Code Online (Sandbox Code Playgroud)
但是,我确实需要考虑null.其中,如果string
失败则默认输出将返回a null
.除了我注意到它int.TryParse
不起作用:
int? value = null;
int.TryParse(Session["Key"].ToString(), out value);
Run Code Online (Sandbox Code Playgroud)
那么如何尝试解析,如果失败则导致null?
我发现了这个问题,微软开发者网络指示:
当此方法返回时,如果转换成功,则包含等效于s中包含的数字的有符号整数值;如果转换失败,则包含零.如果string参数为null或String.Empty,格式不正确,或者表示小于最小值或大于最大值的数字,则转换失败.此参数未初始化传递.
明确指出,如果int.TryParse
失败,整数将保持零值. 在我的使用实例中,零可以是有效值.所以我需要null
,任何想法?
当然; 利用返回值int.TryParse
(如果转换成功与否则返回):
int? retValue = null;
int parsedValue = 0;
if (int.TryParse(Session["Key"].ToString(), out parsedValue))
retValue = parsedValue;
else
retValue = null;
return retValue;
Run Code Online (Sandbox Code Playgroud)
我承认有点冗长,但你可以将它包装在一个函数中.
int tmp;
int? value = int.TryParse(Session["Key"].ToString(), out tmp) ? (int?)tmp : null;
Run Code Online (Sandbox Code Playgroud)