亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 14:07:43
字體:
來源:轉載
供稿:網友

1.CLR加載編譯源文件

 

  捕獲01

注1.:當你點擊調試或者生成解決方案的時候這就是一個編譯過程首先CLR加載源文件也就是你寫的代碼(此代碼在文件中是字符串)然后將項目中的嗲嗎編譯成IL代碼進而生成程序集 證明過程 用反編譯工具反編譯.exe文件 。更深層次的變化我也不知道。

注2.當項目啟動時,CLR(公共語言運行庫)會加載項目里的所有類到內存,并找到其中的主函數,作為默認的啟動函數調用執行。但是如果項目中包含一個以上的主函數時,clr因為不知道要從哪個啟動,所以報錯。反之如果項目中沒有包含主函數,clr也不知道如何啟動,所以也報錯。

2.多維數組和交錯數組

?聲明一個變量的時候,其實是在內存的棧里面開辟空間,默認情況下的值是null;如 int[] arrInt;//此時arrint等于null;int[] arrInt= new int[5];注意等號左側在棧中間開辟了一個小空間;右邊在堆空間里,開辟了連續的5個空間;等號執行的時候,會將堆里開辟的第一個空間的地址賦值給棧里的空間。

**數組的聲明與創建如下圖:

捕獲02

捕獲03

多維數組和交錯數組

3.方法 參數 返回值

1.為什么要有方法?           1.重復調用      2.封裝具體的實現。

2.概念:

函數就是將一堆代碼進行重用的一種機制。函數就是一段代碼,這段代碼可能有輸入的值(參數),可能會返回值。一個函數就像一個專門做這件事的人,我們調用它來做一些事情,它可能需要我們提供一些數據給它,它執行完成后可能會有一些執行結果給我們。要求的數據就叫參數,返回的執行結果就是返回值。

3.string s=Console.ReadLine()就是一個有返回結果的函數;

Console.WriteLine(“hello”)就是一個有執行參數的函數,只有告訴WriteLine被打印的數據它才知道如何打??;

int i=Convert.ToInt32("22")則是一個既有參數又有返回值的函數。

注:有了函數寫代碼就像拼積木,C#中的各種各樣的技術其實就是通過for、if等這些基礎的語法將不同的函數按照一定的邏輯組織起來。

4.方法的定義:
[訪問修飾符] [static] 返回值類型 方法名(參數列表)
{
        方法體;
}

方法的大括號就是一個作用域塊,在該作用域里聲明的變量只能在該作用域使用。 命名規則:方法名開頭大寫,參數名開頭小寫,參數名、變量名要有意義
方法的調用,對于靜態方法,如果在同一個類中,直接寫名字調用就行了.      return 為方法返回值。 同時可以立即退出方法。

5.常用的已經學過的方法:

Console.WriteLine();
Console.Write();
Console.ReadLine();
Console.ReadKey();
int.Parse(string);
Convert.ToInt32(string);
對于由static修飾的方法,使用:類名.方法名()調用.
如果在類中調用自己的由static修飾的方法,可以省略類名.

4.退出多重循環

 

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.閱讀下面的程序,說一下輸出結果是多少?

圖片1

2.

局部變量:在方法中定義的變量,其作用域從定義開始,到其所在的大括號結束為止。問題:在if中的呢?在一個方法中想要訪問另一個方法中的變量,怎么辦?兩種解決方法:參數和返回值       舉例:寫一個方法,判斷一個年份是否是潤年.
   方法中的return語句
   導致函數立即返回。
   有void 表示無返回值,當然就不用return。
   在返回值非void的函數中return值

//只要出現了大括號,就會有一個新的作用域塊,那么該作用域中創建的對象都不能超出此作用域訪問。

6.關于Caonsole.WriteLine()分析 主要解釋方法的重載

 

捕獲04

其實大家看僅僅這一個console.writeline微軟就封裝很多,有時候我只知道怎么用,為什么它能這么用,微軟為了使用方便封裝了太多的東西讓你看不到。

問題 : 為什么要有方法的重載? 可以只記一個方法名,傳入不同的參數,就可以調用對應的方法。

示例:使用方法重載來完成計算器

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深層次的研究。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美一区二区三区久久人妖| 欧美乱妇40p| 亚洲91精品在线| 国产精品一区二区性色av| 中文国产成人精品久久一| 91夜夜揉人人捏人人添红杏| 欧美极品美女视频网站在线观看免费| 日韩精品在线影院| 永久免费精品影视网站| 欧美精品www| 国产欧美精品一区二区三区介绍| 久久久爽爽爽美女图片| 亚洲在线观看视频| 亚洲一区二区久久久| 日韩中文字幕在线看| 亚洲free嫩bbb| 国产成人亚洲综合91| 91在线网站视频| 成人免费视频xnxx.com| 人九九综合九九宗合| 日韩av综合网| 国内精品久久久久影院优| 日韩精品视频免费专区在线播放| 亚洲电影免费观看高清完整版在线| 777777777亚洲妇女| 欧美大片在线影院| 2019国产精品自在线拍国产不卡| 亚洲国产精品字幕| 国产精品欧美激情在线播放| 欧美激情视频一区二区| 深夜福利日韩在线看| 国产999精品视频| 亚洲成人激情在线观看| 欧美日韩在线视频一区二区| 久久久女人电视剧免费播放下载| 日本三级韩国三级久久| 国产xxx69麻豆国语对白| 国产亚洲精品成人av久久ww| 一本大道亚洲视频| 国产在线一区二区三区| 在线观看精品自拍私拍| 久久久久久久国产精品| 亚洲精品成人久久电影| 国产一区二中文字幕在线看| 日韩在线观看网址| 欧美激情va永久在线播放| 欧美黑人极品猛少妇色xxxxx| 国产精品美女视频网站| 亚洲天堂av女优| 欧美大片在线看免费观看| 国产精品电影观看| 一区二区欧美日韩视频| 欧美性猛交xxxx富婆| 国产精品日韩在线播放| 欧美电影《睫毛膏》| …久久精品99久久香蕉国产| 久久人91精品久久久久久不卡| 92福利视频午夜1000合集在线观看| 欧美电影免费在线观看| 日韩中文字幕在线精品| 蜜臀久久99精品久久久无需会员| 免费97视频在线精品国自产拍| 日韩精品视频免费| 欧美成人免费观看| 国产日韩一区在线| 久久久视频免费观看| 中文字幕欧美日韩| 亚洲午夜国产成人av电影男同| 国产人妖伪娘一区91| 国产精品91一区| 久久久天堂国产精品女人| 亚洲综合在线做性| 国产一区二区在线免费视频| 伊人伊人伊人久久| 懂色aⅴ精品一区二区三区蜜月| 国产精品久久久久久久久久久新郎| 久久精品国产亚洲7777| 亚洲精品一区中文字幕乱码| 亚洲成色777777在线观看影院| 欧美精品久久久久久久免费观看| 成人h猎奇视频网站| 日韩成人性视频| 国产a∨精品一区二区三区不卡| 欧美性jizz18性欧美| 国产小视频国产精品| 日产日韩在线亚洲欧美| 91爱爱小视频k| 久久九九精品99国产精品| 永久555www成人免费| 欧美日韩在线视频首页| 亚洲精品不卡在线| 欧美日韩综合视频| 欧美日韩另类字幕中文| 久久久久久久影院| 亚洲精品成人久久| 亚洲欧美激情精品一区二区| 国产精品久久久久久av福利软件| 欧美午夜精品在线| 中日韩美女免费视频网址在线观看| 久久人91精品久久久久久不卡| 日本最新高清不卡中文字幕| 国产在线播放91| 这里精品视频免费| 日韩中文有码在线视频| 欧美激情xxxx| 国产精品成人va在线观看| 欧美性猛交视频| 91免费看片网站| 777午夜精品福利在线观看| 国产a级全部精品| wwwwwwww亚洲| 久久精品视频在线播放| 亚洲国产精品一区二区三区| 69av在线视频| 亚洲最大的网站| 中文字幕亚洲综合久久筱田步美| 91久久中文字幕| 亚洲人av在线影院| 精品国偷自产在线视频99| 日韩最新av在线| 91国产高清在线| 久久久人成影片一区二区三区| 性色av一区二区咪爱| 亚洲日韩第一页| 色播久久人人爽人人爽人人片视av| 国产精品视频免费观看www| 一本色道久久综合狠狠躁篇的优点| 97国产suv精品一区二区62| 欧美在线视频免费| 欧美性猛交xxxx免费看| 亚洲无线码在线一区观看| 精品久久久精品| 日本精品视频在线播放| 日韩成人xxxx| 欧美精品久久久久久久久| 国产成人精品一区二区| 亚洲精品v天堂中文字幕| 亚洲第一男人天堂| 欧美视频在线观看免费| 欧美日韩国内自拍| 成人免费网站在线看| 欧美夫妻性生活视频| 色偷偷av亚洲男人的天堂| 国内精品久久久久久中文字幕| 日韩电影中文字幕av| 国产精品pans私拍| 日韩精品在线免费观看视频| 亚洲天堂开心观看| 中文字幕日韩欧美在线视频| 国产精品一区二区三区在线播放| 国产精品视频1区| 麻豆一区二区在线观看| 久久精品91久久香蕉加勒比| 黑人巨大精品欧美一区二区一视频| 91av免费观看91av精品在线| 成人免费网站在线| 欧美亚洲成人xxx| 欧美不卡视频一区发布| 2019中文在线观看| 中文字幕一区日韩电影| 欧美精品999| 亚洲欧美一区二区三区情侣bbw| 国产区亚洲区欧美区| 日韩电影视频免费|