【发布时间】:2019-05-31 02:28:13
【问题描述】:
我想做一个方法 int.TryParse(string, out int number),但是如果不能 Parse 的数字应该是 null 而不是 0。
我见过其他一些解决方案,但似乎没有一个实际上允许定义条目类型。
基本上我要问的是:
如何将 int.TryParse 中的“int”更改为其他内容,例如 int?.TryParse
public static bool TryParse(this int? i, string input, out int? output)
{
var IsNumber = int.TryParse(input, out int result);
if (!IsNumber)
output = null;
else
output = result;
return IsNumber;
}
这是我目前所拥有的,但现在我必须创建一个 int 对象?为了使用它而不是仅仅能够直接在 int 上使用它?输入。
我有什么:
var _string = Console.ReadLine();
int? nInt = null;
var IsNumber = nInt.TryParse(_string, out int? result);
我想要什么:
var _string = Console.ReadLine();
var IsNumber = int?.TryParse(_string, out int? result);
我检查的东西:
Convert string to nullable type (int, double, etc...)
TryParse Nullable types generically
伪答案:
public class Int
{
public static bool TryParse(string input, out int? output)
{
var IsNumber = int.TryParse(input, out int result);
if (!IsNumber)
output = null;
else
output = result;
return IsNumber;
}
}
然后可以用作
var IsNumber = Int.TryParse(_input, out int? result);
返回一个布尔值和一个值为 int 或 null 的实例“结果”。
【问题讨论】:
-
@Rawling 他们都使用字符串的实例。我明确要求不要做的事情......
-
请编辑您的问题正文,说明您不同意副本的原因,而不是问题标题。
-
您可以使用 int.TryParse。你已经注意到了。但是我想知道,假设可以使用 int?.TryParse,什么字符串输入会导致 null?您希望能够处理 null、1、2、3、4、5 等计算吗?
-
@ClarkKent,来自帖子:
the number should be a null if it can't Parse。这听起来(对我来说)就像string input是cake,而不是将结果设置为0,它应该设置为null。 -
so int?.TryParse("") 结果为真和空?或 int?.TryParse("null") 结果为真和空?或 int?.TryParse("cake") 将导致 true 和 null?还是全部??什么会导致 false 和 null?
标签: c# extension-methods nullable signature tryparse