在C#中如何用一行代码将字符串转换为可空整型(Nullable<int>,int?)?
How to write one line code to parse a string into a nullabe int in C#?
目前能够想到的最少两行
int temp;
int? val = Int32.TryParse(parseStr, out temp) ? temp : (int?)null;
期待高手一行的解决方案!
赞!你的回答启发了我。
我本来尝试了下面的代码:
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: 只判断str是否为null,但是不判断str是否能转换为int,这样不太好吧。。
@新的开始: TryParse 这个就是尝试转换,骚年。深入一下吧!
把这两行写到一行里面不就行了嘛,哈哈。。。
另外,说一下@dudu ,dudu,我在这个编辑器里,如果在第一个位置,输入中文(搜狗输入法)的时候,第一个字符总按英语自己就输入了。。。
比如我这个回复,第一个字是“把”,我输入ba的时候,是先自己输入了一个b的英文字符,然后,a按中文打出“啊”,只是光标在位置0的时候是这样,我打一个空格,从第二个位置输入,就没这种问题了。。。不知道我表述清楚了没有。。。
@新的开始: 我们的应用场景是读取缓存,可以不用考虑是否可以转换为int
@贫民窟大侠: 我当然知道TryParse 的用法,好像是C#6.0开始可以不用特意在外面定义第二个参数
@顾晓北: 你最开始进入编辑器的时候别恩backspace键就不会出现这个问题了,这个问题的出现应该是你吧默认的p标签给删除了
@刘宏玺: 我没删除什么东西。。。
@顾晓北: 你可以多试试!
写一个扩展方法给可以?如果可以那就是通用的一行了
using System.ComponentModel; var val = new Int32Converter().IsValid(str) ? int.Parse(str) : default(int?);
我也很讨厌 try
封装一下不就一行了:
"1".To<int>();
是吧?
怎么样?
@首页: 是不错