Return 来自专用 TryParse 方法 c# 的值

Return value from dedicated TryParse Method c#

我似乎无法在网上的任何地方找到我的问题的答案。

我正在尝试在单独的 class 中编写一个 Int.TryParse 方法,只要用户进行输入就可以调用它。所以不是每次有输入时都写这个:

    int z;
    int.TryParse(Console.writeLine(), out z);

我正在努力做到这一点(从 main 方法)

int z; 
Console.WriteLine("What alternative?");   
Try.Input(Console.ReadLine(), z); // sends the input to my TryParse method

tryparse 方法

 class Try
    {

    public static void Input(string s, int parsed)
    {
        bool Converted = int.TryParse(s, out parsed);

        if (Converted)      // Converted = true
        {
            return;                
        }
        else                //converted = false
        {
            Console.Clear();
            Console.WriteLine("\n{0}: Is not a number.\n\nPress ENTER to return", s);
            Console.ReadLine();
            return;
        }
    }       

    } 

}

为什么我的 Variabel "z" 得到的是 "parsed" 的值,而程序 return 的值?

为了将 parsed 值传递给调用方法,您需要 return 或将其作为 out 参数使用,例如 int.TryParse() 确实如此。

返回值是最直接的方式,但并不能提供解析是否成功的方法。但是,如果将 return 类型更改为 Nullable<int>(也称为 int?),则可以使用空 return 值来指示失败。

public static int? Input(string s)
{
    int parsed;
    bool Converted = int.TryParse(s, out parsed);

    if (Converted)      // Converted = true
    {
        return null;                
    }
    else                //converted = false
    {
        Console.Clear();
        Console.WriteLine("\n{0}: Is not a number.\n\nPress ENTER to return", s);
        Console.ReadLine();
        return parsed;
    }
}      


Console.WriteLine("What alternative?");   
int? result = Try.Input(Console.ReadLine()); 
if(result == null)
{
    return;
}
// otherwise, do something with result.Value

使用 out 参数将镜像 int.TryParse() 方法签名:

public static bool Input(string s, out int parsed)
{
    bool Converted = int.TryParse(s, out parsed);

    if (Converted)      // Converted = true
    {
        return false;                
    }
    else                //converted = false
    {
        Console.Clear();
        Console.WriteLine("\n{0}: Is not a number.\n\nPress ENTER to return", s);
        Console.ReadLine();
        return true;
    }
}       

Console.WriteLine("What alternative?");   
int z;
if(!Try.Input(Console.ReadLine(), out z))
{
    return;
}
// otherwise, do something with z