涉及函数的基本 C# 程序不起作用

Basic C# Program Involving functions not working

我是 C# 的初学者,正在创建一个带有函数的程序,但不幸的是,我很困惑如何 return 将函数中的值传递给主程序。

我已经研究过其他类似的问题,但我找不到答案,因为它非常基础。

class Program
{
    public int answer = 0;
    public int column = 0;
    public int UserInput;


    static void Main(string[] args)
    {

        BinaryInput(int UserInput);
        Console.WriteLine(UserInput);
        
    }

    static int BinaryInput (ref int UserInput)
    {
        UserInput = int.Parse(Console.ReadLine());
        return UserInput;

    } 

}

}

对同一事物同时使用 return 值和 ref 参数是完全没有必要的。

只需选择这样的方法:

static int GetBinaryInput()
{ 
  return int.Parse(Console.ReadLine());
}

static void Main(string[] args)
{
  int UserInput = GetBinaryInput();
  Console.WriteLine(UserInput);
}

或者那样,这里更喜欢 out:

static void GetBinaryInput(out int UserInput)
{ 
  UserInput = int.Parse(Console.ReadLine());
}

static void Main(string[] args)
{
  GetBinaryInput(out var UserInput);
  Console.WriteLine(UserInput);
}

使用参考:

static void GetBinaryInput(ref int UserInput)
{ 
  UserInput = int.Parse(Console.ReadLine());
}

static void Main(string[] args)
{
  int UserInput = 0;
  GetBinaryInput(ref UserInput);
  Console.WriteLine(UserInput);
}

对于所讨论的案例,第一个更传统、更干净。

使用所有方法都可以访问的实例变量UserInput也是没用的,因为这是方法交互之间的参数,否则就是这个没用

也更喜欢 TryParse 来控制错误,否则使用异常处理。

What's the difference between the 'ref' and 'out' keywords?

When to use in vs ref vs out

Best practice: ref parameter or return value?

Which is better, return value or out parameter?

如果您要 return 一个值,您也需要正确类型的变量才能 return 它,例如:

static void Main(string[] args)
{
  int output = BinaryInput();
  Console.WriteLine(output);
}

static int BinaryInput()
{
  UserInput = int.Parse(Console.ReadLine());
  return UserInput;
}