首页 新闻 会员 周边 捐助

在C#中如何用一行代码将string转换为int?

1
悬赏园豆:30 [已解决问题] 解决于 2018-01-17 17:55

在C#中如何用一行代码将字符串转换为可空整型(Nullable<int>,int?)?

How to write one line code to parse a string into a nullabe int in C#?

C#
dudu的主页 dudu | 高人七级 | 园豆:30925
提问于:2016-07-30 16:11
< >
分享
最佳答案
2

目前能够想到的最少两行

int temp;
int? val = Int32.TryParse(parseStr, out temp) ? temp : (int?)null;

期待高手一行的解决方案!

收获园豆:30
Jeffcky | 老鸟四级 |园豆:2789 | 2016-07-30 16:36

赞!你的回答启发了我。

我本来尝试了下面的代码:

int? result = (str == null ? null : int.Parse(str));

报错:

Type of conditional expression cannot be determined because there is no implicit conversion between '<null>' and 'int'

看了你的回答后,把第2个null改为(int?)null,就大功告成了!

int? result = (str == null ? (int?)null : int.Parse(str));
dudu | 园豆:30925 (高人七级) | 2016-07-30 17:11

@dudu: 只判断str是否为null,但是不判断str是否能转换为int,这样不太好吧。。

新的开始 | 园豆:679 (小虾三级) | 2016-08-01 00:18

@新的开始: TryParse  这个就是尝试转换,骚年。深入一下吧!

大楚打码人 | 园豆:4313 (老鸟四级) | 2016-08-01 11:07

 把这两行写到一行里面不就行了嘛,哈哈。。。

 

另外,说一下@dudu ,dudu,我在这个编辑器里,如果在第一个位置,输入中文(搜狗输入法)的时候,第一个字符总按英语自己就输入了。。。

 

比如我这个回复,第一个字是“把”,我输入ba的时候,是先自己输入了一个b的英文字符,然后,a按中文打出“啊”,只是光标在位置0的时候是这样,我打一个空格,从第二个位置输入,就没这种问题了。。。不知道我表述清楚了没有。。。

顾晓北 | 园豆:10898 (专家六级) | 2016-08-01 11:08

@新的开始: 我们的应用场景是读取缓存,可以不用考虑是否可以转换为int

dudu | 园豆:30925 (高人七级) | 2016-08-01 11:46

@贫民窟大侠: 我当然知道TryParse 的用法,好像是C#6.0开始可以不用特意在外面定义第二个参数

新的开始 | 园豆:679 (小虾三级) | 2016-08-01 23:33

@顾晓北: 你最开始进入编辑器的时候别恩backspace键就不会出现这个问题了,这个问题的出现应该是你吧默认的p标签给删除了

刘宏玺 | 园豆:14020 (专家六级) | 2016-08-02 12:51

@刘宏玺: 我没删除什么东西。。。

顾晓北 | 园豆:10898 (专家六级) | 2016-08-02 13:22

@顾晓北: 你可以多试试!

刘宏玺 | 园豆:14020 (专家六级) | 2016-08-02 13:23
其他回答(3)
0

写一个扩展方法给可以?如果可以那就是通用的一行了

 

刘宏玺 | 园豆:14020 (专家六级) | 2016-08-02 12:51
0
using System.ComponentModel;


var val = new Int32Converter().IsValid(str) ? int.Parse(str) : default(int?);

 

我也很讨厌 try

虾。 | 园豆:257 (菜鸟二级) | 2016-08-03 13:17
0

封装一下不就一行了:

"1".To<int>();

 

terry59599s | 园豆:202 (菜鸟二级) | 2016-08-30 14:16

是吧?

支持(0) 反对(0) terry59599s | 园豆:202 (菜鸟二级) | 2016-08-30 14:17

怎么样?

支持(0) 反对(0) terry59599s | 园豆:202 (菜鸟二级) | 2016-08-30 14:17

@首页: 是不错

支持(0) 反对(0) terry59599s | 园豆:202 (菜鸟二级) | 2016-08-30 14:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册