此格式的方法非常像有傳回值方法與有參數方法的結合體(以靜态方法為例)
有參數有傳回值的方法的格式
//[public] static 傳回值類型 方法名(參數清單) 形參
//參數清單 等同與 下面的 參數1,參數2,...
[public] static 傳回值類型 方法名(參數1,參數2,...)
{
方法體
return 傳回值的類型
}
//方法調用
[類名].方法名(參數1,參數2,...) 實參
方法名(參數1,參數2,...)
//==========對比有傳回值無參數=============
[public] static 傳回值類型 方法名()
{
方法體
return 傳回值的類型
}
與昨天對比最大變化就是可以向方法中傳遞參數,是以适用範圍更廣
參數清單,形參,實參的叫法了解即可,本質是通過參數向方法内部傳遞資料
注意事項:
1之前說過的其他注意事項在此适用,不再贅述
2)傳入資料的形參類型與傳回值的類型可以一樣也可以不一樣
示例1:程式設計實作輸入的字元串轉換為數字的方法,如果轉換失敗就一直輸入
轉換數字方法
//隻是将昨天的方法修改一下
//傳入參數類型與傳回值的類型不同
static int OutputNum(string strNum)
{
int num = 0;
while (true)
{
try
{
num = Convert.ToInt32(strNum);
Console.WriteLine("轉換成功");
break;
//如果轉換成功執行行号19
//将轉換成功的數字傳回出去
//退出方法
}
catch
{
Console.WriteLine("輸入不是數字,請重新輸入");
strNum = Console.ReadLine();
//如果轉換失敗執行行号17
//執行行号18等待使用者輸入新的"數字"
//再轉到行号8進行轉換,轉換成功,退出方法
//轉換失敗重走一遍行号17-21的過程
}
}
return num;
}
//調用方法
static void Main(string[] args)
{
Console.WriteLine("請輸入數字");
string strNum = Console.ReadLine();
int num = OutputNum(strNum);
Console.WriteLine("");//換行
Console.WriteLine("輸入的數字為 {0}", num);
Console.ReadKey();
}
示例2:程式設計實作兩個操作數進行加減乘除的簡易方法,傳回值即運算的結果
程式設計思路(僅供參考)
1)傳入三個參數即兩個操作數和一個算術運算符(+,-*,/)
2)傳入一個複合類型的參數(數組或者結構,規定第一個為操作符,後兩個為操作數)
計算兩個操作數結果的方法
//傳入數組參數傳回操作結果
static double Calculate(object[] opeNum)
{
double result = 0.0;
string ope = (string)opeNum[0];
//string strNum1 = (string)opeNum[1];
//string strNum2 = (string)opeNum[2];
//int num1 = OutputNum(strNum1);
//int num2 = OutputNum(strNum2);
//上面注釋的4行等同于下面的num3與num4
//因為轉換方法隻能傳入字元串類型
//此方法傳回值類型為int
//需要将示例1中行号11的注釋掉
int num3 = OutputNum((string)opeNum[1]);
int num4 = OutputNum((string)opeNum[2]);
switch (ope)
{
case "+":
//程式會自動進行隐式類型轉換
result = num3 + num4;
break;
case "-":
result = num3 - num4;
break;
case "*":
result = num3 * num4;
break;
case "/":
//沒有做除數不能為0的檢測
//是以此處可能報異常
result = num3 / num4;
break;
default:
//如果輸入的操作符不在
//+-*/中,傳回為0
result = 0;
break;
}
//不管上面傳入的操作符是否正确
//最後是否正常計算都有傳回值
return result;
}
//調用方法
static void Main(string[] args)
{
//最好使用字元串數組
//元素的資料可以使用輸入語句
object[] arr = { "*", "8", "6" };
double res = Calculate(arr);
Console.WriteLine("{0} {1} {2} = {3}", arr[1], arr[0], arr[2], res);
Console.ReadKey();
}
方法中有一些非常不合理的代碼,其目的隻想盡可能多的拓展程式設計實作方式
如數組使用字元串類型最好,與轉換數字方法最契合使用更簡便
方法原型
含義:簡單來說就是方法格式的第一行代碼
//這是一個公共的沒有傳回值的方法
public static void T1()
//這是一個私有的沒有傳回值的方法
static void T1()
//這是一個私有的傳回值類型為int的方法
static int T1()
//這是一個私有的傳回值類型為int
//參數為int 類型的方法
static int T1(int num)
隻需通過檢視方法原型,即可知道該方法的通路級别,是否有傳回值,傳回值類型是什麼,是否有參數及參數的類型等資訊
定義方法時可以首先将方法原型編寫出來,有了原型再在方法中編寫實作方法功能
将滑鼠放在要調用的方法上按F12或右擊選擇"轉到定義"即可檢視該方法原型
Console.WriteLine("");方法的原型