【问题标题】:Basic C# Program Involving functions not working涉及功能不工作的基本 C# 程序
【发布时间】:2021-08-04 09:51:46
【问题描述】:

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

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

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;

    } 

}

}

【问题讨论】:

    标签: c# function procedure


    【解决方案1】:

    对同一件事同时使用返回值和 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 来控制错误,否则使用异常处理。

    How TryParse method works?

    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?

    【讨论】:

      【解决方案2】:

      如果你要返回一个值,你也需要正确类型的变量来返回它,例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多