我从C++切换到C#,并试图学习这些方法。你能帮我创建一个方法,将2个变量作为用户的输入吗?在C++中,只需制作一个无效方法并在变量名称前添加&
,如:void Input(int &a, int &b)
,这将在主函数中保存其值的任何更改。有没有办法在C#中做到这一点?从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
来标记它。
对于输出参数,必须在函数成员正常完成之前为其分配一个值。 – brykneval
对于OP的问题,“出”是正确的答案吗?他提到他想要改变用户输入的变量,这意味着变量已经被赋值。因此,'out'不起作用,应该使用'ref'? – Jurjen
@brykneval权利,这正是执行输入的方法应该发生的。 – dasblinkenlight
您可以使用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
}
}
值得一提的是的ref
在C#中的用法应当是不同于C++非常罕见的。请参阅Jon Skeet's关于参数传递的文章。
在C#可以通过引用与ref
keyword传递参数。所以,你可以定义你的方法,如:
public void Input (ref int foo, ref int bar) {
foo = 14;
bar = 25;
}
您呼叫与ref
关键字方法以及:
int a = 0;
int b = 0;
Input(ref a, ref b);
// now a = 14 and b = 25
您提到这传递通过引用明确(但好处是,语法上很明显这是通过引用)。
- 1. 从用户处获取输入
- 2. 从Lua中的用户获取输入
- 3. 从用户处获取矩阵输入c
- 4. 如何使用Python中的输入框从用户处获取输入?
- 5. 获取用户输入的C++
- 6. 获取准确的用户输入,C
- 7. 在c#中获取用户输入
- 8. 使用.value方法从DOM获取用户输入(Basic Javascript Timer)
- 9. 如何读取用户输入以启动c中的方法#
- 10. 从语音中获取用户输入?
- 11. 无法从Android中的表单获取用户输入
- 12. 在C中获取用户输入的最简单方法是什么?
- 13. 从C++中的文件获取输入
- 14. 从C++中的文件获取输入?
- 15. 批处理 - 从用户输入中获取多个参数
- 16. 使用Switch C++获取用户输入
- 17. 当usb设备插入时从用户处获取输入
- 18. 如何获取Ajax.ActionLink调用动作方法的用户输入?
- 19. 获取输入从PUT方法Web.py
- 20. 在iPhone上获取用户输入的方法
- 21. 从用户输入中获取数组值C
- 22. Java - 从用户获得特定输入的高效方法
- 23. 处理无效用户输入的C#
- 24. xargs无法获取用户输入?
- 25. 从HTML表单获取用户输入
- 26. 从后台获取用户输入
- 27. 从JtextArea获取用户输入
- 28. 从用户获取输入号码
- 29. 从JavaFX获取用户输入
- 30. 从JTextArea获取用户输入
'&'是C#中的'ref'。 –
或使用Tuple https://msdn.microsoft.com/en-us/library/system.tuple(v=vs.110).aspx – brykneval
@brykneval:元组是只读的afaik。 –