其他类型的 TryParse

TryParse for other types

我想做一个方法int.TryParse(string, out int number),但是如果不能解析,数字应该是null而不是0。

我看过其他一些解决方案,但其中 none 似乎实际上允许定义条目类型。

基本上我要问的是:

How can I change the "int" in int.TryParse to something else, e.g. 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 的实例 'result'。

您不能在此处重载 Nullable<T> 结构,其中 Tint 中。因此,您必须解决另一种方法才能调用该方法。

你似乎想在 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);