C# 輸出參數
out是C#中的關鍵字,用於將參數作為參考類型傳遞給方法。作為輸出參數傳遞給方法的變數在傳遞給方法呼叫之前不需要宣告或初始化。在控制項離開被呼叫方法之前以及被呼叫方法向呼叫方法傳回任何值之前,被呼叫方法需要為 out 參數的變數賦值。可以將多個輸出參數傳遞給一個方法,並且該方法傳回多個值。
文法及解釋:
使用 out 參數呼叫此方法時,語法如下:
Method_name(out data_type variable_name);
這裡,Method_name 是任何使用者定義的方法名稱,'out' 是關鍵字,用於表示傳遞給方法的變數是輸出參數,data_type 可以是變數的任何資料類型,variable_name 是使用者定義的變數名稱。
呼叫方法的語法如下:
access_specifier return_type Method_name(out data_type variable_name);
這裡,access_specifier 可以是 C# 支援的五個存取說明符中的任何存取說明符,例如 public 或 private。然後,return_type 是該方法傳回的資料類型,後面跟著方法名稱和「out」參數清單。
「out」參數在 C# 中如何運作?
在 C# 中,「out」關鍵字的作用類似於「ref」和「in」關鍵字。 'out' 和'ref' 參數之間的區別在於,'out' 參數變數在傳遞給方法之前不需要初始化,使用者可以在方法的參數列表中聲明'out' 參數變數而不是單獨聲明它,這稱為“out”參數的內聯聲明,而“ref”參數變數需要在傳遞給方法之前初始化。可以在同一程式碼區塊中存取內聯聲明的“out”參數。
範例#1
代碼:
using System; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { //inline declaration of 'out' parameter Display(out int num); Console.WriteLine("Value of variable 'num': {0}", num); Console.ReadLine(); } public static void Display(out int a) { //need to assign value a = 10; a += a; } } }
輸出:
- 現在,‘out’和‘in’關鍵字的差別在於,‘out’參數值可以在被呼叫方法內部修改,而‘in’參數值不能在被呼叫方法內部修改。
- 一個方法可以有多個「out」參數,例如:Display(out x, out y);
- 要使用「out」參數,使用者需要在方法定義和呼叫方法中明確使用「out」關鍵字。同時,方法定義和呼叫中的「out」參數的名稱不必相同。
- 「out」參數透過參考傳遞給方法,因此它們不會在記憶體中建立新的儲存位置,並使用方法呼叫中變數參數所佔用的相同儲存位置。由於使用“out”的方法,參數可以傳回多個值,因此可以幫助使用者從被呼叫的方法中取得多個處理後的值。但在方法向呼叫方法傳回任何值之前,必須為「out」參數指派方法中的一些值。
- 我們不能在所有類型的方法中使用“out”參數,就像我們不能在使用“async”修飾符定義的非同步方法中使用“out”參數一樣,我們也不能在“iterator”方法中使用“out”參數由“yield return”或“yield break”語句組成。由於屬性不是變量,因此我們不能將它們作為“輸出”參數傳遞給方法。
- ‘out’參數可以使用泛型型別來定義,以表示該型別參數是協變的。除此之外,「out」參數在 C# 中不同資料型別的 TryParse() 方法中使用。 TryParse() 方法傳回布林值,指定成功或失敗,成功時,結果由「out」參數給定。
範例#2
代碼:
using System; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { string str = "123456"; int num; //if ‘canParse’ is true; the result of conversion will be stored in ‘num’ bool canParse = Int32.TryParse(str, out num); if (canParse) Console.WriteLine(num); else Console.WriteLine("Could not be parsed."); Console.ReadLine(); } } }
輸出:
C# 輸出參數範例
以下是 C# 輸出參數的範例:
範例#1
範例顯示將多個「out」參數傳遞給方法,然後該方法傳回多個值。
代碼:
using System; namespace ConsoleApp4 { public class Program { public static void Main() { //declaring variables without assigning values float area, perimeter; //passing multiple variables to a method using 'out' keyword Calculate(5, 10, out area, out perimeter); //displaying the result Console.WriteLine("The area of rectangle is: {0}", area); Console.WriteLine("The perimeter of rectangle is: {0}", perimeter); Console.ReadLine(); } //method taking length & breadth & it will return area and perimeter of rectangle public static void Calculate(int length, int breadth, out float area, out float perimeter) { area = length * breadth; perimeter = 2 * (length + breadth); } } }
輸出:
範例#2
顯示「out」參數內嵌聲明的範例。
代碼:
using System; namespace ConsoleApp4 { public class Program { public static void Main() { //in-line declaration of variables without assigning values Calculate(out int length, out int breadth, out float area); //displaying the values of length, breadth, and area Console.WriteLine("Length of rectangle: " + length); Console.WriteLine("Breadth of rectangle: " + breadth); Console.WriteLine("Area of rectangle: " + area); Console.ReadLine(); } //method taking 'out' parameters and it returns multiple values public static void Calculate(out int l, out int b, out float a) { l = 30; b = 40; a = l * b; } } }
輸出:
結論
C# 中的「out」參數允許使用者透過引用方法來傳遞參數。用作“out”參數的變數在傳遞給方法之前不需要初始化。被呼叫的方法應該在傳回值之前為 out 參數賦值。
以上是C# 輸出參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。
