簡介
在C#編程中,有時會希望使用引用形式從方法中接收值,但不傳入。例如,可能有一個執行某種功能的方法,比如打開在引用形參中返回成功或失敗代碼的網路套接字。在此情況下,沒有信息傳遞方法,但有從方法傳出的信息。這種情況存在的問題是在調用前必須將
ref形參初始化為一個值。因此,要使用
ref形參,需要賦予實參一個啞元值,從而可以滿足這一約束。C#中out形參就可以解決此類問題。
out形參類似於
ref形參,但它只能用來將值從方法中傳出。在調用之前,並不需要為out形參的變數賦予初始值。在方法中,out形參總是被認為是未賦值的,但在方法結束前必須賦於形參一個值。因此,當調用方法後,out形參引用的變數會包含一個值。
下面是一個使用out形參例子。方法RectInfo()返回已知邊長的矩形面積。在形參isSquare中,如果矩形是正方形,返回true,否則返回false。因此,RectInfo()向調用者返回兩條信息。
代碼
using System;class Rectangle{ int side1; int side2; public Rectangle(int i, int j){ side1 = i; side2 = j; } // Return area and determine if square. public int RectInfo(out bool isSquare){ if (side1 == side2) isSquare = true; else isSquare = false; return side1 * side2; }}class OutDemo{ static void Main(){ Rectangle rect = new Rectangle(10, 23); int area; bool isSqr; area = rect.RectInfo(out isSqr); if (isSqr) Console.WriteLine("rect is a square."); else Console.WriteLine("rect is not a square."); Console.WriteLine("Its area is " + area + "."); Console.ReadKey(); }}