天天看點

C# - 有傳回值無參數方法 045

作者:源丁程式設計

無參數有傳回值:方法不包含參數,但有傳回值,可以稱為無參有傳回值的方法(還是以靜态方法為例)

其方法文法格式:

[public] static 傳回值類型 方法名()
{
  方法體 
 return 傳回值(包含在方法體内)
  //傳回值的類型與傳回值類型必須是相同(相容)的資料
  //相容即可以進行隐式轉換
}
//傳回值的類型決定傳回值類型
//======對比無參數無傳回值方法===========
[public] static void 方法名()
{
  方法體 
}           

有傳回值方法注意事項:

1)如果方法的傳回類型書寫為void,則方法中不能使用return,因為使用void就表示方法是無傳回值的方法

2)将void改為想要傳回資料的資料類型;如想要傳回的資料,類型為int,則傳回值類型為int

3)有傳回值的需要在方法體内通過return關鍵字将1)的資料類型(int)的資料傳回出去

是以有傳回值的 傳回值類型與return必須同時都有(通過參數進行傳回值的除外)

4)return 的類型必須與傳回值類型相同(相容);類型可以是之前說過的任意類型

C# - 有傳回值無參數方法 045

定義有傳回值的方法

//在同一類中定義的方法
//T1 T2 T3 T4 都是錯誤的方法定義
static void T1()
 {
     //沒有書寫傳回值類型
     return 4;//傳回一個int類型的4
     //改正 應将 void 改為 int
 }
 static int T2()
 {
     //沒有書寫要傳回的int類型資料
    //改正 return int類型的資料
   //如 return 6;
 }
 static int T3()
 {
     //傳回值與傳回值類型不相同也不相容
     return "8";
   //改正 應該為進行強制類型轉換為int類型的8
 }
 static int T4()
 {
     //不能傳回多個值
     return 3,6; 
 }
//===========================================================
//T5 T6 T7 定義正确的方法
 static int T5()
 {
     //傳回與傳回值類型相同的資料
     return 6;
 }
 static int T6()
 {
     byte b = 6;
     //傳回相容的資料
     return b;
 }
 static int T7()
 {
     //傳回強制轉換為相同相容類型的資料
     string strNum = "8";
     ////強制轉換相同類型
     //int num = Convert.ToInt32(strNum);
     ////return num;
     ////強制轉換相容類型
     //byte bNum = Convert.ToByte(strNum);
     //return bNum;
     //不要聲明變量,直接傳回強制轉換後的資料
     return Convert.ToInt32(strNum);
   }           

5)方法的傳回值隻能有一個,不能傳回多個值;如果想傳回多個值的資料現階段可以使用數組,枚舉或結構;使用object類型的數組或者結構可以傳回多個不同類型的資料

6)在外界調用方法的地方一般都會有相同(相容)類型的變量用于接收的方法的傳回值

調用處是否必須有相應類型的變量接收依需要而定;傳回值在外界需要進行其他處理的可以聲明接收變量,如下面T8()傳回值不是周遊而是進行排序

class Program
{
    //定義枚舉
    enum Gender { 男, 女 }
    static void Main(string[] args)
    {
        //聲明一個nums 的int類型數組用于接收方法T8傳回值
        //将方法T8的傳回值指派給nums
        int[] nums = T8();
        for (int i = 0; i < nums.Length; i++)
        {
            Console.WriteLine(nums[i]);
        }
      	Console.WriteLine("");
        Gender[] sex = T9();
        foreach (Gender item in sex)
        {
            Console.WriteLine(item);
        }
        Console.ReadKey();
    }
    //傳回枚舉類型
    static Gender[] T9()
    {
        Gender[] sex = new Gender[2];
        sex[0] = Gender.男;
        sex[1] = Gender.女;
        return sex;
    }
    //傳回數組類型
    static int[] T8()
    {
        //聲明一個用于傳回int[]類型資料的數組
        int[] arr = new int[6];
        for (int i = 0; i < arr.Length; i++)
        {
            //為每一個元素進行指派
            Console.WriteLine("請輸入第{0}個元素的值", i + 1);
            //可以使用try-catch檢測輸入的是否可以轉換為int類型的資料
            arr[i] = int.Parse(Console.ReadLine());
        }
        //将數組傳回出去
        return arr;
    }
}
//傳回結構類型資料自己程式設計實作           

以T8為例 執行原理:1)在Main()方法中調用T8()方法,T8是具有傳回值的方法,是以聲明一個接收T8傳回值類型的變量用于接收器傳回值 2)執行到T8()方法會進入方法内部依次執行T8()方法内代碼,最後通過return傳回數組 3)傳回的數組資料指派給nums數組變量,最後周遊輸出

7)使用return會跳出方法,是以書寫多個return 隻會傳回第一個return後面的值而且也隻會執行return之前的代碼,return後面的代碼不再執行

C# - 有傳回值無參數方法 045

return會退出方法

static string T10()
 {
     Console.WriteLine("(*^﹏^*)正常輸出");
     return "張三";//執行到此處退出T10()方法
     Console.WriteLine("( >︿< ) return 退出方法無法輸出");
 }
 static string T11()
 {
     return "張三";//執行到此處傳回資料張三 退出T11()方法
     return "李四";
 }
static void Main(string[] args)
{
  //隻調用不接收
  //因為在這裡不需要進行其他處理
  T10();
  T11(); 
  Console.ReadKey();
}           

示例:輸出數字;方法内部檢測使用者輸入的數字字元串是數字,是:傳回數字;否:一直輸入

C# - 有傳回值無參數方法 045

檢測使用者輸入的是否為數字

static int OutputNum()
 {
     int num = 0;
     Console.WriteLine("請輸入數字");
     while (true)
     {
         try
         {
             num = Convert.ToInt32(Console.ReadLine());
             break;
           //如果轉換沒有異常,表示轉換成功
           //break就會退出 while 死循環
           //如果轉換出現異常,就會讓使用者一直輸入
         }
         catch
         {
             Console.WriteLine("輸入不是數字,請重新輸入");
         }
     }
     return num;//傳回轉換成功的資料
 }
//方法内部執行原理
1)詢問 請輸入數字
2)進入死循環
3)進入try語句塊中,接收強制轉換後的資料
如果轉換成功退出死循環
執行return傳回資料,整個方法執行完畢
4)如果轉換失敗 執行catch語句塊中的代碼
再次執行num = Convert.ToInt32(Console.ReadLine());
接收使用者輸入的資料,如果轉換還是失敗
就一直讓使用者輸入
最好使用斷點調試檢視其執行過程,更易了解
 static void Main(string[] args)
 {
     int num = OutputNum();
     Console.WriteLine("");//換行
     Console.WriteLine("輸入的數字為 {0}",num);
     Console.ReadKey();
 }           

小結:

1) 将傳回值類型的void改變為想要傳回類型的資料類型

2) 傳回值類型必須與傳回值的類型相同或相容

3) 方法隻能傳回一個值;傳回多個值需要使用複雜的資料類型(枚舉,結構與數組)

4) 隻會執行return語句之前的代碼,之後的不會執行