C#中获取用户输入的方法

Method that takes Input from user in C#

我正在从 C++ 转向 C#,我正在努力学习这些方法。你能帮我创建一个将 2 个变量作为用户输入的方法吗?在 C++ 中,只需创建一个 void 方法并在变量名称前添加 & 非常简单,例如:void Input( int &a, int &b) 这将在主函数中保存它们值的任何更改。有没有办法在 C# 中做到这一点?

在 C# 中,C++ 的 T &x 有两个选项:

  • ref 参数 - 这些具有与 C++ 参考参数相同的功能,并且
  • out 参数 - 这些允许将数据从方法传回,但不能传入方法。

在您的情况下,out 更合适,因为它允许您传递之前未分配的变量:

void Input( out int a, out int b) {
    ... // Read and assign a and b
}

你可以这样调用这个方法:

// In C# 7
Input(out int a, out int b);    
// Prior to C# 7
int a, b;
Input(out a, out b);

请注意,与自动获取引用的 C++ 不同,C# 需要您使用关键字 out.

进行标记

您可以使用 ref (C# Reference) 实现此目的。这等于 C++ & 参考。

一个例子:

class RefExample
{
    static void Method(ref int i)
    {
        // The following statement would cause a compiler error if i
        // were boxed as an object.
        i = i + 44;
    }

    static void Main()
    {
        int val = 1;
        Method(ref val);
        Console.WriteLine(val);

        // Output: 45
    }
}

值得一提的是,与 C++ 不同,ref 在 C# 中的使用应该很少见。请参考Jon Skeet's关于参数传递的文章。

在 C# 中,您可以使用 ref keyword通过引用 传递参数。所以你可以像这样定义你的方法:

public void Input (<b>ref</b> int foo, <b>ref</b> int bar) {
    foo = 14;
    bar = 25;
}

也使用ref关键字调用方法:

int a = 0;
int b = 0;
Input(<b>ref</b> a, <b>ref</b> b);
// now a = 14 and b = 25

你这个明确地提到了传递引用(但优点是在语法上很明显这是传递引用)。