我從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。 –