目錄
「out」參數在 C# 中如何運作?
範例#2
C# 輸出參數範例
結論
首頁 後端開發 C#.Net教程 C# 輸出參數

C# 輸出參數

Sep 03, 2024 pm 03:29 PM
c# c# tutorial

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
使用 C# 的活動目錄 使用 C# 的活動目錄 Sep 03, 2024 pm 03:33 PM

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

C# 序列化 C# 序列化 Sep 03, 2024 pm 03:30 PM

C# 序列化指南。這裡我們分別討論C#序列化物件的介紹、步驟、工作原理和範例。

C# 中的隨機數產生器 C# 中的隨機數產生器 Sep 03, 2024 pm 03:34 PM

C# 隨機數產生器指南。在這裡,我們討論隨機數產生器的工作原理、偽隨機數和安全數的概念。

C# 資料網格視圖 C# 資料網格視圖 Sep 03, 2024 pm 03:32 PM

C# 資料網格視圖指南。在這裡,我們討論如何從 SQL 資料庫或 Excel 檔案載入和匯出資料網格視圖的範例。

C# 中的階乘 C# 中的階乘 Sep 03, 2024 pm 03:34 PM

C# 階乘指南。這裡我們討論 C# 中階乘的介紹以及不同的範例和程式碼實作。

c#多線程和異步的區別 c#多線程和異步的區別 Apr 03, 2025 pm 02:57 PM

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

C# 中的模式 C# 中的模式 Sep 03, 2024 pm 03:33 PM

C# 模式指南。在這裡,我們討論 C# 中模式的介紹和前 3 種類型,以及其範例和程式碼實作。

C# 中的質數 C# 中的質數 Sep 03, 2024 pm 03:35 PM

C# 質數指南。這裡我們討論c#中素數的介紹和範例以及程式碼實作。

See all articles