Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中从用户处获取输入的方法# 我从C++转到C语言,我正在努力学习这些方法。你能帮我创建一个方法,将2个变量作为用户的输入吗?在C++中,在变量的名称之前添加一个空洞方法并添加和代码>非常简单,比如:空洞输入(int和a,int和b)< /> >,这将保存它们在main函数中的任何值的变化。有没有办法在C#中做到这一点_C#_Methods_Pass By Reference - Fatal编程技术网

在C中从用户处获取输入的方法# 我从C++转到C语言,我正在努力学习这些方法。你能帮我创建一个方法,将2个变量作为用户的输入吗?在C++中,在变量的名称之前添加一个空洞方法并添加和代码>非常简单,比如:空洞输入(int和a,int和b)< /> >,这将保存它们在main函数中的任何值的变化。有没有办法在C#中做到这一点

在C中从用户处获取输入的方法# 我从C++转到C语言,我正在努力学习这些方法。你能帮我创建一个方法,将2个变量作为用户的输入吗?在C++中,在变量的名称之前添加一个空洞方法并添加和代码>非常简单,比如:空洞输入(int和a,int和b)< /> >,这将保存它们在main函数中的任何值的变化。有没有办法在C#中做到这一点,c#,methods,pass-by-reference,C#,Methods,Pass By Reference,在C#中,对于C++的T&x,有两个选项: < > >强> >代码> REF< /COD>参数 -它们具有与C++引用参数相同的功能, 输出参数-这些参数允许从方法传回数据,但不允许将数据传回方法 在您的情况下,out更合适,因为它允许您传递以前未分配的变量: void Input( out int a, out int b) { ... // Read and assign a and b } 您可以这样调用此方法: // In C# 7 Input(out int a, out

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

    < > >强> >代码> REF< /COD>参数 -它们具有与C++引用参数相同的功能,
  • 输出
    参数
    -这些参数允许从方法传回数据,但不允许将数据传回方法
在您的情况下,
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语言要求你用关键字<代码>外> /代码>来标记它。这等于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++。请参阅关于参数传递的文章。

在C#中,您可以使用通过引用传递参数。因此,您可以定义您的方法,如:

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

您明确地提到了passbyreference(但优点是从语法上看,这是passbyreference).

在C#中,
&
是一个
ref
。或者使用Tuple@bryknaval:Tuple是只读的。对于out,必须在函数成员正常完成之前为参数赋值。
out
是OP问题的正确答案吗?他提到他想改变用户输入的变量,这意味着变量已经被分配了。因此,<代码> OUT//> >不能使用,<代码> REF 应该使用。@ BryKulvAL,这就是在执行输入的方法中应该发生的。@ NuclearPenguin,我很确定这是一个措辞不好的选择:C++没有“代码> Outs< /Cord>变量的概念,所以如果您通过指针或引用传递某些东西,它总是一个“更改”,而不是初始赋值。C#为您提供了决定是否需要原始值的灵活性。调用
ref
的副作用是需要在调用之前分配变量。
int a = 0;
int b = 0;
Input(ref a, ref b);
// now a = 14 and b = 25