天天看點

C# - 有傳回值有參數方法,方法原型 046

作者:源丁程式設計

此格式的方法非常像有傳回值方法與有參數方法的結合體(以靜态方法為例)

有參數有傳回值的方法的格式

//[public] static 傳回值類型 方法名(參數清單)  形參
//參數清單 等同與 下面的  參數1,參數2,...
[public] static 傳回值類型 方法名(參數1,參數2,...)
{
    方法體
   return 傳回值的類型
}
//方法調用
[類名].方法名(參數1,參數2,...) 實參
方法名(參數1,參數2,...)
//==========對比有傳回值無參數=============
[public] static 傳回值類型 方法名()
{
    方法體
   return 傳回值的類型
}           

與昨天對比最大變化就是可以向方法中傳遞參數,是以适用範圍更廣

參數清單,形參,實參的叫法了解即可,本質是通過參數向方法内部傳遞資料

注意事項:

1之前說過的其他注意事項在此适用,不再贅述

2)傳入資料的形參類型與傳回值的類型可以一樣也可以不一樣

示例1:程式設計實作輸入的字元串轉換為數字的方法,如果轉換失敗就一直輸入

C# - 有傳回值有參數方法,方法原型 046

轉換數字方法

//隻是将昨天的方法修改一下
//傳入參數類型與傳回值的類型不同
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)傳入一個複合類型的參數(數組或者結構,規定第一個為操作符,後兩個為操作數)

C# - 有傳回值有參數方法,方法原型 046

計算兩個操作數結果的方法

//傳入數組參數傳回操作結果
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或右擊選擇"轉到定義"即可檢視該方法原型

C# - 有傳回值有參數方法,方法原型 046

Console.WriteLine("");方法的原型