標籤:
方法之所以存在就是為了被調用!使用方法名來調用一個方法,要求它執行它的任務。如果方法要擷取資訊(由它的參數指定),就必須提供它需要的資訊。如果方法要返回資訊(由它的傳回型別指定),就應該以某種方式來捕捉這個資訊。
指定方法調用文法
為了調用一個C#方法,需要採用如下文法形式:
methodName (argumentList)
methodName(方法名)必須與調用的那個方法的名稱完全一致。記住,C#語言是區分大小寫。
argumentList(參數列表)用於提供將由方法接收的可選資訊。必須為每個參數(形參)提供一個參數值(實參),而且每個參數值都必須相容於它對應的形參的類型。如果方法有兩個或者更多的參數,那麼在提供參數值時,必須使用逗號來分隔不同的參數。
重要提示每個方法調用中都必須包含一對圓括弧,即使調用一個無參數的方法。
下面再次列出了addValues方法:
int addValues(int leftHandSide, int rightHandSide)
{
// ...
}
addValues方法有兩個int參數,所以在調用該方法時,必須提供兩個以逗號分隔的int實參:
addValues(39, 3); // 正確方式
還可以將直接量39和3替換成int變數的名稱。這些變數的值會作為參數值傳遞給方法,例如:
int arg1 = 99;
int arg2 = 1;
addValues(arg1, arg2);
下面列出了一些不正確的addValues調用方式:
addValues; // 編譯時間錯誤,無圓括弧
addValues(); // 編譯時間錯誤,無足夠實參
addValues(39); // 編譯時間錯誤,無足夠實參
addValues("39", "3"); // 編譯時間錯誤,類型錯誤
addValues方法將返回一個int值。這個int值可以在能夠使用一個int值的任何地方使用。例如:
result = addValues(39, 3); // 作為賦值操作符的右運算元
showResult(addValues(39, 3)); // 作為另一個方法調用的實參
在下面的練習中,我們將繼續使用MathsOperators應用程式。這一次,我們將研究一些方法調用。
研究方法調用
1.返回Methods項目。如果是剛完成上一個練習,該項目應該已經在Visual Studio 2005中開啟;否則,請從My Documents檔案夾的\Microsoft Press\Visual CSharp Step by Step\Chapter 3\Methods子檔案夾中開啟它。
2.在“代碼和文字編輯器”視窗中顯示Form1.cs的代碼。
3.找到calculate_Click方法,觀察該方法在try語句和起始大括弧之後的前兩個語句。
這兩個語句是:
int leftHandSide = System.Int32.Parse(leftHandSideOperand.Text);
int rightHandSide = System.Int32.Parse(rightHandSideOperand.Text);
這兩個語句聲明了兩個int變數,分別叫leftHandSide和rightHandSide。然而,最有趣的地方是變數的初始化方式。在兩個語句中,都調用了System.Int32類的Parse方法(System是一個命名空間,Int32是該命名空間中的一個類的名稱)。Parse方法要求擷取一個字串參數,並能把它轉換成一個int值。執行了這兩個語句之後,使用者在表單上的leftHandSideOperand和rightHandSideOperand文字框中輸入的任何內容都會轉換成int值。
4.觀察calculate_Click方法的第4個語句(在if語句和另一個起始大括弧之後):
calculatedValue = addValues(leftHandSide, rightHandSide));
該語句調用addValues方法,將leftHandSide 和rightHandSide變數的值作為方法的實參來傳遞。addValues方法的傳回值將儲存到calculatedValue變數中。
5.繼續觀察下一個語句:
showResult(calculatedValue);
該語句調用showResult方法,將calculatedValue變數的值作為方法的實參來傳遞。showResult方法不返回任何值。
6.在“代碼和文字編輯器”視窗中找到之前討論過的showResult方法。該方法只有一個的語句:
result.Text = answer.ToString();
注意,即使沒有參數,調用ToString方法時也使用了圓括弧。
提示為了調用從屬於其他對象的方法,可以在方法名之前附加對象名首碼。在上例中,運算式answer.ToString()調用的就是從屬於answer對象的ToString方法。
C# 調用方法