我想创建一个方法int.TryParse(string,out int number),但是如果不能解析,则该数字应为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。
答案 0 :(得分:3)
您不能在此处重载=>
中Nullable<T>
所在的T
结构。因此,您必须解决另一种方法才能调用该方法。
您似乎正在尝试在int
上创建扩展方法,实际上该扩展方法应该在int?
上,然后您必须使用字符串实例来调用它:
string
调用:
public static bool TryParse(this string input, out int? output)
{
var IsNumber = int.TryParse(input, out int result);
if (!IsNumber)
output = null;
else
output = result;
return IsNumber;
}