方法之所以存在就是為了被調用!使用方法名來調用一個方法,要求它執行它的任務。如果方法要獲取信息(由它的參數指定),就必須提供它需要的信息。如果方法要返回信息(由它的返回類型指定),就應該以某種方式來捕捉這個信息。
指定方法調用語法
為了調用一個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方法。