哇,什么是TryParse

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,任何想法?

Bra*_*NET 9

当然; 利用返回值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)

我承认有点冗长,但你可以将它包装在一个函数中.


Ale*_*exD 6

int tmp;
int? value = int.TryParse(Session["Key"].ToString(), out tmp) ? (int?)tmp : null;
Run Code Online (Sandbox Code Playgroud)