首頁  >  文章  >  後端開發  >  C# 輸出參數

C# 輸出參數

WBOY
WBOY原創
2024-09-03 15:29:34786瀏覽

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;
}
}
}

輸出:

C# 輸出參數

  • 現在,‘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# 輸出參數範例

以下是 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);
}
}
}

輸出:

C# 輸出參數

範例#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# 輸出參數

結論

C# 中的「out」參數允許使用者透過引用方法來傳遞參數。用作“out”參數的變數在傳遞給方法之前不需要初始化。被呼叫的方法應該在傳回值之前為 out 參數賦值。

以上是C# 輸出參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn