我想要创建一个方法int.TryParse(string,out ),但是如果它不能解析而不是0,那么这个数字应该是null。
我已经看到了一些其他的解决方案,但这些解决方案似乎都不允许定义条目类型。
基本上我想问的是:
如何将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。
发布于 2019-01-04 13:55:43
不能在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;
}称之为:
yourStringInstance.TryParse(out int? result);https://stackoverflow.com/questions/54040252
复制相似问题