程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 數往知來C#之面向對象准備〈一〉,

數往知來C#之面向對象准備〈一〉,

編輯:C#入門知識

數往知來C#之面向對象准備〈一〉,


1.CLR加載編譯源文件

 

  static void() { for(int i = 0; i < 10 ;i++) { for(int j = 0 ;j<10;j++) { break;//退出當前循環 continue; //退出本次循環 Console.WriteLine(“不執行了”); } } }

注1.break 退出當前循環的意思是不管 J 等於3或者4 裡面的for循環都不執行了。

注2.continue 推出本次循環的意思是 continue下面的console.writeline本次不執行了 接著執行 J 等於 1的下一次循環。

5.變量的作用域(局部變量)

1.閱讀下面的程序,說一下輸出結果是多少?

public class _20120213_02簡單計算器 { //方法重載的關鍵條件,是方法名一致,參數列表不同; //使用方法重載,來完成簡單的計算器 static void Main4(string[] arr) { //要求,接收用戶的兩個數,當然,可以是整型的,也可以是小數的 //輸出:兩數的結果 //提示用戶輸入第一個數 Console.WriteLine("請輸入第一個數:"); //接受第一個數 string strNumA = Console.ReadLine(); //提示用戶輸入第二個數 Console.WriteLine("請輸入第二個數:"); //接受第二個數 string strNumB = Console.ReadLine(); //計算結果 if (strNumA.IndexOf('.') > -1 || strNumB.IndexOf('.') > -1) { double fNumA = Convert.ToDouble(strNumA); double fNumB = Convert.ToDouble(strNumB); double iResult = Add(fNumA, fNumB); Console.WriteLine("結果:" + iResult); } else { int iNumA = Convert.ToInt32(strNumA); int iNumB = Convert.ToInt32(strNumB); int iResult= Add(iNumA, iNumB); Console.WriteLine("結果:"+iResult); } Console.ReadKey(); } //以下的三個方法,名字一樣,但是方法的參數列表 個數 或 類型 不同,所以構成了方法重載 static int Add(int numA, int numB) { return numA + numB; } static double Add(double numA, double numB) { return numA + numB; } static double Add(double numA) { return numA; } }

注 :out與ref的相同點和不同點。

相同點 : 凡事使用out/ref修飾的參數,傳遞的都是引用。

不同點: 1.out關鍵字側重於輸出參數,也就是我調用你這個方法,是為了通過輸出的方式獲得值。(return返回值也是為了通過方法獲得值):通常在方法需要多個值的時候使用。所以out參數必須在方法返回多個值的時候使用

          2..ref側重於修改:也就是我調用你這個方法,病傳入參數的目的是為了在方法中修改傳入的這個變量。所以ref參數必須在傳入之前就賦值。

代碼示例:

public class _20120213_05ATM
    {
        static void Main(string[] str)
        {
            double myMoney = 30000;
            Operating(ref myMoney);
        }

        #region 01.ATM啟動
        /// <summary>
        /// 01.ATM啟動
        /// </summary>
        /// <param name="count">賬戶余額</param>
        static void Operating(ref double count)
        {
            do
            {
                Console.WriteLine("請問您是要存還是取呢?親~~(1-存,2-取)~");
                string optType = Console.ReadLine();
                if (optType != "1" && optType != "2")
                {
                    Console.WriteLine("您輸入的操作類型有誤,請重新輸入~~");
                    continue;
                }
                do
                {
                    Console.WriteLine("請輸入要操作的金額(以元為單位):");
                    string strMoney = Console.ReadLine();
                    double dMoney = 0;
                    
                    if (double.TryParse(strMoney, out dMoney))//如果轉換成功返回true;並且dMoney裡已被賦值。
                    {
                        //傳入參數:操作類型,操作金額,賬戶余額
                        if (Branch(optType, dMoney, ref count))
                        {
                            Console.WriteLine("操作完畢,成功啦~~");
                            Console.WriteLine("顯示余額:" + count);
                            break;//如果操作過程麼有錯誤,則跳出 當前循環(此循環用來在數據類型有誤時提示用戶重新操作)
                        }
                    }
                    else
                    {
                        Console.WriteLine("您輸入的數據類型有誤~~");
                    }
                } while (true);
                Console.WriteLine("是否要繼續操作?(Y/N)");
                string strRes = Console.ReadLine();
                if (strRes.ToUpper() == "N")
                {
                    break;//跳出 整個操作循環,任務即將結束
                }
            } while (true);
            Console.WriteLine("任務結束~~按任意鍵退出");
            Console.ReadLine();
        } 
        #endregion

        #region 02.根據類型判斷操作
        /// <summary>
        /// 02.根據類型判斷操作
        /// </summary>
        /// <param name="optType"></param>
        static bool Branch(string optType,double money,ref double count)
        {
            switch (optType)
            {
                case "1":
                    SaveMoney(money, ref count);
                    return true;
                case "2":
                    {
                        return GetMoney(money, ref count);
                    }
                default:
                    return false;
            }
        } 
        #endregion

        #region 03.存錢取錢
        static void SaveMoney(double money, ref double count)
        {
            count += money;
            Console.WriteLine("存錢成功~~");
        }

        static bool GetMoney(double money, ref double count)
        {
            if (money < count)
            {
                count -= money;
                Console.WriteLine("取錢成功~~");
            }
            else
            {
                Console.WriteLine("Sorry,您的余額好像不足了哦~~~");
            }
            return money < count;
        } 
        #endregion
    }

 

7.可變參數Params

示例代碼:

public class _20120213_06可變數組參數
    {
        static void Main8(string[] str)
        {
            //一、可變參數params:使用的時候(調用方法的時候):
            //1.還是可以直接傳數組進去的
            string[] dogsNames = { "小花", "小妞", "阿黃", "大黃", "小強" };
            //BuyDogs(dogsNames);
            //2.也可以直接傳 和 參數數組 同類型的 元素進去
            //BuyDogs("小花", "小妞", "阿黃", "大黃", "小強");
            
            //二、容易犯的錯
            //規定 可變參數 在一個方法的參數列表中:
            //1.方法的參數列表中 可變參數 只能有一個;
            //2.這僅有的一個 可變參數 必須在參數列表的最後;
            BuyDogs("劉德華", "小花", "小妞", "阿黃", "大黃", "小強");
            Console.ReadLine();
        }

        static void BuyDogs(params string[] dogsNameArr)
        {
            for (int i = 0; i < dogsNameArr.Length; i++)
            {
                Console.WriteLine("第" + (i + 1) + "只小狗的名字為:" + dogsNameArr[i]);
            }
        }

        static void BuyDogs(string masterName,params string[] dogsNameArr)
        {
            for (int i = 0; i < dogsNameArr.Length; i++)
            {
                Console.WriteLine(masterName + " 的第" + (i + 1) + "只小狗的名字為:" + dogsNameArr[i]);
            }
        }

        static void BuyDogs(string masterName, string masterName2, params string[] dogsNameArr)
        {
            for (int i = 0; i < dogsNameArr.Length; i++)
            {
                Console.WriteLine(masterName + ",masterName2=" + masterName2 + " 的第" + (i + 1) + "只小狗的名字為:" + dogsNameArr[i]);
            }
        }
    }

注: 當多個方法的參數列表中和後面可變參數的類型一樣的時候,用戶調用該方法,會優先調用參數多的方法。

 

--此文算是以後研究更深層次的引子吧,比如out和ref深層次的研究。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved