C# 基础语法
目錄
- C# 基礎(chǔ)語(yǔ)法
- C# 注釋符
- C# 變量(Variable)
- 變量的存儲(chǔ)
- 變量的基本數(shù)據(jù)類(lèi)型
- 變量的使用規(guī)則
- 變量的命名
- 變量的作用域
- C# 運(yùn)算符
- 賦值運(yùn)算符
- 復(fù)合賦值運(yùn)算符
- `+`號(hào)的作用
- 算術(shù)運(yùn)算符
- 關(guān)系(比較)運(yùn)算符
- 邏輯運(yùn)算符
- 三元運(yùn)算符
- C# 占位符
- C# 轉(zhuǎn)義符
- `@`符號(hào)
- C# 類(lèi)型轉(zhuǎn)換
- 隱式類(lèi)型轉(zhuǎn)換(自動(dòng)類(lèi)型轉(zhuǎn)換)
- 顯式類(lèi)型轉(zhuǎn)換(強(qiáng)制類(lèi)型轉(zhuǎn)換)
- Convert類(lèi)型轉(zhuǎn)換
- TryParse類(lèi)型轉(zhuǎn)換
- ToString類(lèi)型轉(zhuǎn)換
- C# 結(jié)構(gòu)劃分
- C# 分支結(jié)構(gòu)
- if 語(yǔ)句
- if-else 語(yǔ)句
- if-else-if 語(yǔ)句
- switch-case 語(yǔ)句
- C# 循環(huán)結(jié)構(gòu)
- while 循環(huán)
- do-while循環(huán)
- for 循環(huán)
- C# 關(guān)鍵字
- break關(guān)鍵字
- continue關(guān)鍵字
- C# 復(fù)雜數(shù)據(jù)類(lèi)型
- C# 常量(Constant)
- 常量的聲明
- 什么時(shí)候使用常量?
- C# 枚舉(Enum)
- 枚舉的聲明和使用
- 枚舉與基本數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)化
- C# 結(jié)構(gòu)
- C# 數(shù)組
- 數(shù)組的排序
- C# 方法(函數(shù))
- 方法調(diào)用
- 關(guān)鍵字return
- 方法調(diào)用
- out參數(shù)
- ref參數(shù)
- params可變參數(shù)
- 方法的重載
- 方法的遞歸
- C# 異常
- 異常捕獲
- 產(chǎn)生隨機(jī)數(shù)
gitee代碼傳送門(mén)配合代碼食用更佳
C# 基礎(chǔ)語(yǔ)法
🌳C# 語(yǔ)言是在 C、C++ 的基礎(chǔ)上發(fā)展而來(lái)的,因此在語(yǔ)法形式上有些類(lèi)似。
🌳掌握 C# 的基本語(yǔ)法是學(xué)好 C# 語(yǔ)言的前提。
🌳C#語(yǔ)言是一種強(qiáng)類(lèi)型語(yǔ)言,要求每個(gè)變量都必須指定數(shù)據(jù)類(lèi)型。
🌳任何一個(gè)程序都離不開(kāi)選擇語(yǔ)句和循環(huán)語(yǔ)句,例如登錄一個(gè)網(wǎng)站需要輸入用戶(hù)名和密碼,如果輸入正確,可以進(jìn)入該網(wǎng)站,否則無(wú)法登錄,這里使用的就是選擇語(yǔ)句。
🌳此外,如果輸入用戶(hù)名和密碼的次數(shù)超過(guò) 3 次就不允許登錄,則可以使用循環(huán)語(yǔ)句進(jìn)行判斷或者使用跳轉(zhuǎn)語(yǔ)句完成。
C# 注釋符
①注釋符的作用
②C#具有3種注釋符
C# 變量(Variable)
變量的存儲(chǔ)
變量用來(lái)在計(jì)算機(jī)當(dāng)中存儲(chǔ)數(shù)據(jù)
存儲(chǔ)變量的語(yǔ)法
變量類(lèi)型 變量名;//聲明或者定義某個(gè)類(lèi)型的變量 變量名 = 值;//給這個(gè)變量進(jìn)行賦值 //聲明并且給變量賦值的簡(jiǎn)寫(xiě)形式 變量類(lèi)型 變量名 = 值;注:=在這里并不是表示等于而是表示賦值
變量的基本數(shù)據(jù)類(lèi)型
變量的使用規(guī)則
如果你要是用變量的話,應(yīng)該先聲明再賦值最后使用。
變量的命名
首先要保證的就是這個(gè)變量的名字要有意義。
注意
在滿(mǎn)足上面一系列的規(guī)則之外同時(shí)還要滿(mǎn)足這一系列的規(guī)范。
給變量起名字的時(shí)候要滿(mǎn)足兩個(gè)命名規(guī)范
變量的作用域
🌳變量的作用域就是你能夠使用到這個(gè)變量的范圍。
🌳變量的作用域一般從聲明它的那個(gè)括號(hào)開(kāi)始到那個(gè)括號(hào)所對(duì)應(yīng)的結(jié)束的括號(hào)結(jié)束。
🌳在這個(gè)范圍內(nèi),我們可以訪問(wèn)并使用變量。超出這個(gè)范圍就訪問(wèn)不到了。
C# 運(yùn)算符
由XX運(yùn)算符連接的表達(dá)式稱(chēng)為XX表達(dá)式
如:由算術(shù)運(yùn)算符連接的表達(dá)式稱(chēng)為算術(shù)表達(dá)式。
賦值運(yùn)算符
賦值運(yùn)算符中最常見(jiàn)的是等號(hào),除了等號(hào)以外還有很多賦值運(yùn)算符,它們通常都是與其他運(yùn)算符連用起到簡(jiǎn)化操作的作用。
| = | x = y,等號(hào)右邊的值賦值給等號(hào)左邊的變量,即把變量 y 的值賦給變量 x |
注意:每個(gè)表達(dá)式我們都可以求解出一個(gè)定義,對(duì)于賦值表達(dá)式而言,等號(hào)左邊的變量的值,就是整個(gè)賦值表達(dá)式的值。
復(fù)合賦值運(yùn)算符
| += | x+=y,等同于 x=x+y |
| -= | x-=y,等同于 x=x-y |
| *= | x*=y,等同于 x=x*y |
| /= | x/=y,等同于 x=x/y |
| %= | x%=y,等同于 x=x%y |
+號(hào)的作用
算術(shù)運(yùn)算符
| + | 對(duì)兩個(gè)操作數(shù)做加法運(yùn)算 |
| - | 對(duì)兩個(gè)操作數(shù)做減法運(yùn)算 |
| * | 對(duì)兩個(gè)操作數(shù)做乘法運(yùn)算 |
| / | 對(duì)兩個(gè)操作數(shù)做除法運(yùn)算 |
| % | 對(duì)兩個(gè)操作數(shù)做取余運(yùn)算 |
| ++ | x ++ 或 ++ x,等同于x = x + 1 |
| -- | x -- 或 -- x,等同于x = x - 1 |
需要注意的是,++ 和 -- 運(yùn)算符放在操作數(shù)前和操作數(shù)后是有區(qū)別的,如果放在操作數(shù)前,需要先將操作數(shù)加 1 或減 1,然后再與其他操作數(shù)進(jìn)行運(yùn)算;如果放在操作數(shù)后,需要先與其他操作數(shù)進(jìn)行運(yùn)算,然后操作數(shù)自身再加 1。
前加加減減示例a = 2,b = ++a + 3?\longrightarrow? a += 1, b = 3 + 3
后加加減減示例a = 2,b = a++ + 3?\longrightarrow? b = 2 + 3, a += 1
對(duì)于像++、--這樣只需要一個(gè)操作數(shù)就能夠完成運(yùn)算的符號(hào),我們稱(chēng)為一元運(yùn)算符。
對(duì)于+、-、*、/、%這樣需要兩個(gè)或以上才能完成運(yùn)算的操作符,我們稱(chēng)為二元運(yùn)算符。
一元運(yùn)算符的優(yōu)先級(jí)要高于二元運(yùn)算符。
如果在一個(gè)表達(dá)式當(dāng)中,既有一元運(yùn)算符,又有二元運(yùn)算符,我們首先計(jì)算一元運(yùn)算符。
關(guān)系(比較)運(yùn)算符
關(guān)系運(yùn)算符是用來(lái)描述兩個(gè)事物之間的關(guān)系
關(guān)系表達(dá)式的結(jié)果是bool類(lèi)型
| == | 表示兩邊表達(dá)式運(yùn)算的結(jié)果相等,注意是兩個(gè)等號(hào) |
| != | 表示兩邊表達(dá)式運(yùn)算的結(jié)果不相等 |
| > | 表示左邊表達(dá)式的值大于右邊表達(dá)式的值 |
| < | 表示左邊表達(dá)式的值小于右邊表達(dá)式的值 |
| >= | 表示左邊表達(dá)式的值大于等于右邊表達(dá)式的值 |
| <= | 表示左邊表達(dá)式的值小于等于右邊表達(dá)式的值 |
邏輯運(yùn)算符
在使用邏輯運(yùn)算符時(shí)需要注意邏輯運(yùn)算符兩邊的表達(dá)式以及返回的結(jié)果都是布爾類(lèi)型的
| && | 邏輯與 | 如果運(yùn)算符兩邊都為 True,則整個(gè)表達(dá)式為 True,否則為 False;如果左邊操作數(shù)為 False,則不對(duì)右邊表達(dá)式進(jìn)行計(jì)算,相當(dāng)于“且”的含義 |
| || | 邏輯或 | 如果運(yùn)算符兩邊有一個(gè)或兩個(gè)為 True,整個(gè)表達(dá)式為 True,否則為 False;如果左邊為 True,則不對(duì)右邊表達(dá)式進(jìn)行計(jì)算,相當(dāng)于“或”的含義 |
| ! | 邏輯非 | 表示和原來(lái)的邏輯相反的邏輯 |
注:邏輯與的優(yōu)先級(jí)要高于邏輯或
三元運(yùn)算符
if-else的簡(jiǎn)化寫(xiě)法
語(yǔ)法
如果表達(dá)式1可以計(jì)算出true,那么表達(dá)式2的值就是整個(gè)三元表達(dá)式的值
如果表達(dá)式1可以計(jì)算出false,那么表達(dá)式3的值就是整個(gè)三元表達(dá)式的值
注意:表達(dá)式2的結(jié)果類(lèi)型必須跟表達(dá)式3的結(jié)果類(lèi)型一致,并且也要跟整個(gè)三元表達(dá)式的結(jié)果類(lèi)型一致。
C# 占位符
使用方法:先挖個(gè)坑,再填個(gè)坑;挖坑就是“,”后變量的個(gè)數(shù),填坑就是占位符的使用。從0開(kāi)始依次遞增。
使用占位符需要注意的地方
C# 轉(zhuǎn)義符
轉(zhuǎn)義符指的就是一個(gè)’ \ '+ 一個(gè)特殊的字符,組成了一個(gè)具有特殊意義的字符
| \' | 單引號(hào) |
| \" | 雙引號(hào) |
| \\ | 反斜杠 |
| \0 | 空 |
| \a | 警告(產(chǎn)生鳴笛音) |
| \b | 退格(放在字符串兩邊沒(méi)有效果) |
| \f | 換頁(yè) |
| \n | 換行 |
| \r | 回車(chē) |
| \t | 水平制表符 |
| \v | 垂直制表符 |
@符號(hào)
C# 類(lèi)型轉(zhuǎn)換
隱式類(lèi)型轉(zhuǎn)換(自動(dòng)類(lèi)型轉(zhuǎn)換)
我們要求等號(hào)兩邊參與運(yùn)算的操作數(shù)的類(lèi)型必須一致,如果不一致,滿(mǎn)足下列條件會(huì)發(fā)生自動(dòng)類(lèi)型轉(zhuǎn)化,或者稱(chēng)之為隱式類(lèi)型轉(zhuǎn)換。
滿(mǎn)足下面兩個(gè)條件才能發(fā)生隱式類(lèi)型轉(zhuǎn)換
顯式類(lèi)型轉(zhuǎn)換(強(qiáng)制類(lèi)型轉(zhuǎn)換)
滿(mǎn)足下面兩個(gè)條件才能發(fā)生顯式類(lèi)型轉(zhuǎn)換
Convert類(lèi)型轉(zhuǎn)換
比如字符串"123"看起來(lái)就能夠轉(zhuǎn)成int類(lèi)型,而字符串"abc"看起來(lái)就不能轉(zhuǎn)成int類(lèi)型。
TryParse類(lèi)型轉(zhuǎn)換
Convert底層就是使用Parse,所以Parse也會(huì)拋異常,而TryParse轉(zhuǎn)化失敗不會(huì)拋異常
int.Parse("123abc"); double.Parse("123abc"); decimal.Parse("123abc");int.TryParse("123abc"); double.TryParse("123abc"); decimal.TryParse("123abc");ToString類(lèi)型轉(zhuǎn)換
所有類(lèi)型都能夠轉(zhuǎn)換成string類(lèi)型
//int n = 10; //double n = 3.14; //decimal n = 20000m; QQstate n = QQstate.Busy; string s = n.ToString(); Console.WriteLine(s);C# 結(jié)構(gòu)劃分
🌳無(wú)論世界上有多少語(yǔ)言、又將出現(xiàn)多少語(yǔ)言,他們的骨架都是這三個(gè)結(jié)構(gòu)“順序結(jié)構(gòu)”、“選擇結(jié)構(gòu)”和“控制結(jié)構(gòu)”。
🌳順序結(jié)構(gòu):程序從Main函數(shù)進(jìn)入,從上到下一行一行的執(zhí)行,不會(huì)落下任何一行。
🌳選擇結(jié)構(gòu):if、if-else、if-else-if、switch-case
🌳循環(huán)結(jié)構(gòu):while、do-while、for、foreach
C# 分支結(jié)構(gòu)
if 語(yǔ)句
語(yǔ)法
if(判斷條件) {代碼塊; }判斷條件:一般為關(guān)系表達(dá)式或者bool類(lèi)型的值亦或是bool類(lèi)型的變量。
執(zhí)行過(guò)程:當(dāng)判斷條件為 True 時(shí)執(zhí)行代碼塊中的內(nèi)容,否則不執(zhí)行并跳出if-else結(jié)構(gòu)。
if結(jié)構(gòu)的特點(diǎn):先判斷再執(zhí)行,最多執(zhí)行一條代碼。
作用:用于一種情況的判斷
if-else 語(yǔ)句
語(yǔ)法
if (判斷條件) {代碼塊1; } else {代碼塊2; }判斷條件:一般為關(guān)系表達(dá)式或者bool類(lèi)型的值亦或是bool類(lèi)型的變量。
執(zhí)行過(guò)程:上面語(yǔ)句的執(zhí)行過(guò)程是當(dāng) if 中的布爾表達(dá)式的結(jié)果為 True 時(shí)執(zhí)行代碼塊1,否則執(zhí)行代碼塊2。代碼塊1或者2執(zhí)行完之后,就跳出if-else結(jié)構(gòu)。
if-else結(jié)構(gòu)的特點(diǎn):先判斷再執(zhí)行,最少執(zhí)行一條代碼。else永遠(yuǎn)只跟離它最近的那個(gè)if配對(duì)。
作用:用于兩種情況的判斷
if-else-if 語(yǔ)句
語(yǔ)法
if (判斷條件1) {代碼塊1; } else if (判斷條件2){代碼塊2; } ... else {代碼塊n; }判斷條件:一般為關(guān)系表達(dá)式或者bool類(lèi)型的值亦或是bool類(lèi)型的變量。
執(zhí)行過(guò)程:先判斷條件1 的值是否為 True,如果為 True,執(zhí)行代碼塊 1,整個(gè)語(yǔ)句結(jié)束,否則依次判斷每個(gè)判斷條件的值,如果都不為 True,執(zhí)行else語(yǔ)句中的語(yǔ)句塊 n。
作用:用于處理多種情況的區(qū)間判斷
需要注意的是,在上面的語(yǔ)法中最后一個(gè) else{} 語(yǔ)句是可以省略的。如果省略了 else{} 語(yǔ)句,那么多分支的 if 語(yǔ)句中如果沒(méi)有判斷語(yǔ)句的值為 True 的語(yǔ)句,則不會(huì)執(zhí)行任何語(yǔ)句塊。
switch-case 語(yǔ)句
語(yǔ)法
switch(變量或者表達(dá)式的值) {case 值1:要執(zhí)行的代碼;break;case 值2:要執(zhí)行的代碼;;break;case 值3:要執(zhí)行的代碼;break;......default:要執(zhí)行的代碼;break; }執(zhí)行過(guò)程:程序執(zhí)行到switch處,首先將括號(hào)中變量或者表達(dá)式的值計(jì)算出來(lái),
然后拿著這個(gè)值依次跟每個(gè)case后面所帶的值進(jìn)行匹配,一旦匹配成功,則執(zhí)行該case所帶的代碼,執(zhí)行完成后,遇到break,跳出switch-case結(jié)構(gòu)。
如果跟每個(gè)case所帶的值都不匹配,就看當(dāng)前這個(gè)switch-case結(jié)構(gòu)中是否存在default,如果有default,則執(zhí)行default中的語(yǔ)句,如果沒(méi)有default,則該switch-case結(jié)構(gòu)什么都不做。
作用:用來(lái)處理多條件的定值判斷。只不過(guò)switch-case能夠處理的,if-else也能夠處理
C# 循環(huán)結(jié)構(gòu)
while 循環(huán)
語(yǔ)法
while (循環(huán)條件) {循環(huán)體; }執(zhí)行過(guò)程: 程序運(yùn)行到while處, 首先判斷while所帶的小括號(hào)內(nèi)的循環(huán)條件是否成立,
如果成立的話, 也就是返回一個(gè)true, 則執(zhí)行循環(huán)體, 執(zhí)行完一遍循環(huán)體后, 再次回到
循環(huán)條件進(jìn)行判斷, 如果依然成立, 則繼續(xù)執(zhí)行循環(huán)體, 如果不成立, 則跳出while循環(huán)。
在while循環(huán)當(dāng)中, 一般總會(huì)有那么一行代碼, 能夠改變循環(huán)條件, 使之終有一天不再成立,
如果沒(méi)有那么一行代碼能夠改變循環(huán)條件, 也就是循環(huán)條件永遠(yuǎn)都成立, 我們稱(chēng)之這種循環(huán)叫做死循環(huán)。
最簡(jiǎn)單的最常用的死循環(huán)
特點(diǎn):先判斷,再執(zhí)行,有可能一遍循環(huán)都不執(zhí)行
do-while循環(huán)
語(yǔ)法
do {循環(huán)體; }while(循環(huán)條件)執(zhí)行過(guò)程: 程序首先會(huì)執(zhí)行do中的循環(huán)體, 執(zhí)行完成后, 去判斷do-while循環(huán)的循環(huán)條件, 如果成立, 則繼續(xù)執(zhí)行do中的循環(huán)體, 如果不成立, 則跳出do-while循環(huán)。
特點(diǎn): 先循環(huán), 再判斷, 最少執(zhí)行一遍循環(huán)體。
for 循環(huán)
語(yǔ)法
for(表達(dá)式 1; 表達(dá)式 2; 表達(dá)式3) {循環(huán)體; }表達(dá)式1一般為聲明循環(huán)變量,記錄循環(huán)的次數(shù) (int i=0;)
表達(dá)式2一般為循環(huán)條件 (i<10)
表達(dá)式3一般為改變循環(huán)條件的代碼,使循環(huán)條件終有一天不再成立 (i++)。
執(zhí)行過(guò)程:程序首先執(zhí)行表達(dá)式1,聲明了一個(gè)循環(huán)變量用來(lái)記錄循環(huán)的次數(shù),
然后執(zhí)行表達(dá)式2 , 判斷循環(huán)條件是否成立,如果表達(dá)式 2 返回的結(jié)果為true,
則執(zhí)行循環(huán)體:當(dāng)執(zhí)行完循環(huán)體后,執(zhí)行表達(dá)式3,然后執(zhí)行表達(dá)式 2 繼續(xù)判斷循環(huán)條件是否成立,
如果成立則繼續(xù)執(zhí)行循環(huán)體,如果不成立,則跳出for循環(huán)。
C# 關(guān)鍵字
break關(guān)鍵字
break一般不單獨(dú)的使用,而是跟著if判斷一起使用,表示當(dāng)滿(mǎn)足某些條件的時(shí)候,就不再循環(huán)了。
continue關(guān)鍵字
continue 會(huì)跳過(guò)當(dāng)前循環(huán)中的代碼,強(qiáng)制開(kāi)始下一次循環(huán)。
C# 復(fù)雜數(shù)據(jù)類(lèi)型
C# 常量(Constant)
與變量不同的是,常量在第一次被賦值后值就不能再改變。定義常量需要使用關(guān)鍵字 const 來(lái)完成。
常量的聲明
語(yǔ)法
const 變量語(yǔ)法 變量名 = 值;需要注意的是,在定義常量時(shí)必須為其賦值,因?yàn)椴毁x值的話以后就再也不能賦值了。另外,也可以同時(shí)定義多個(gè)常量。
什么時(shí)候使用常量?
在程序中使用常量也會(huì)帶來(lái)很多好處,包括增強(qiáng)了程序的可讀性以及便于程序的修改。例如在一個(gè)計(jì)算率的程序中,為了保證程序中的稅率統(tǒng)一,設(shè)置一個(gè)名為 TAX 的常量來(lái)完成,如果需要修改稅率只修改該常量的值即可。
C# 枚舉(Enum)
枚舉就是一種變量類(lèi)型。只是枚舉聲明、賦值、使用的方式跟那些普通的變量類(lèi)型不一樣。
枚舉的作用:枚舉可以規(guī)范開(kāi)發(fā)
舉個(gè)例子說(shuō)明為什么會(huì)有枚舉這個(gè)東西?
比如說(shuō)你現(xiàn)在和三個(gè)人共同做個(gè)某某大學(xué)管理系統(tǒng)。這是你們四個(gè)人都這些事情,并且都分配了不同的模塊,比如存儲(chǔ)性別,每個(gè)人的定義方法都不相同,你們這個(gè)時(shí)候我們可以共同定義性別的規(guī)范,這是就可以使用枚舉規(guī)范我們的開(kāi)發(fā)。
語(yǔ)法
//聲明以及使用 [public] enum 枚舉名 {值1,值2,值3,...... }public:訪問(wèn)修飾符。公開(kāi)的公共的,哪都可以訪問(wèn)。
enum:關(guān)鍵字,聲明枚舉的關(guān)鍵字
枚舉名:要符合Pascal命名規(guī)范
枚舉的聲明和使用
將枚舉聲明到命名空間的下面,類(lèi)的外面,表示這個(gè)命名空間下,所有的類(lèi)都可以使用這個(gè)枚舉。
public enum Season {春,夏,秋,冬 }Season s = Season.春;枚舉與基本數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)化
枚舉類(lèi)型和int類(lèi)型相互轉(zhuǎn)換
枚舉類(lèi)型默認(rèn)是跟int類(lèi)型相互兼容的,所以可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換的語(yǔ)法互相轉(zhuǎn)換。
當(dāng)轉(zhuǎn)換一個(gè)枚舉中沒(méi)有的值的時(shí)候,不會(huì)拋異常,而是直接將數(shù)字顯示出來(lái)。
枚舉類(lèi)型和string類(lèi)型相互轉(zhuǎn)換
枚舉同樣也可以跟string類(lèi)型互相轉(zhuǎn)換,如果將枚舉類(lèi)型轉(zhuǎn)換成string類(lèi)型, 則直接調(diào)用ToString();
如果將字符串轉(zhuǎn)換成枚舉類(lèi)型則需要下面這樣一行代碼:
如果轉(zhuǎn)換的字符串是數(shù)字,則就算枚舉中沒(méi)有,也不會(huì)拋異常。
如果轉(zhuǎn)換的字符串是文本,如果枚舉中沒(méi)有,則會(huì)拋異常。
C# 結(jié)構(gòu)
結(jié)構(gòu)作用:可以幫助我們一次性聲明多個(gè)不同類(lèi)型的變量。
[public] struct 結(jié)構(gòu)名 {成員; //字段 }變量在程序運(yùn)行期間只能存儲(chǔ)一個(gè)值,而字段可以存儲(chǔ)多個(gè)值。
C# 數(shù)組
數(shù)組作用:可以幫助我們一次性存儲(chǔ)多個(gè)相同類(lèi)型的變量。
通過(guò)下標(biāo)或者索引去訪問(wèn)和賦值數(shù)組中的元素。
語(yǔ)法
數(shù)組的長(zhǎng)度一旦固定了,就不能夠再改變了。
數(shù)組的排序
通過(guò)下方兩個(gè)操作可以實(shí)現(xiàn)數(shù)組的升序和降序。
Array.Sort(數(shù)組); //升序 Array.Reverse(數(shù)組); //反轉(zhuǎn)數(shù)組C# 方法(函數(shù))
方法就是將一堆代碼進(jìn)行重用的一種機(jī)制
語(yǔ)法
public:訪問(wèn)修飾符,公開(kāi)的, 公共的,哪都可以訪問(wèn)
static:靜態(tài)的
返回值類(lèi)型:如果不需要寫(xiě)返回值,寫(xiě)void
方法名:Pascal 每一個(gè)單詞的首字母都大寫(xiě),其余字母小寫(xiě)
參數(shù)列表:完成這個(gè)方法所必須要提供給這個(gè)方法的條件。如果沒(méi)有參數(shù),小括號(hào)也不能省略。
方法調(diào)用
方法寫(xiě)好后,如果想要被執(zhí)行,必須要在Main()函數(shù)中調(diào)用。
方法的調(diào)用語(yǔ)法
在某些情況下,類(lèi)名是可以省略的,如果你寫(xiě)的方法跟Main()函數(shù)同在一個(gè)類(lèi)中,這個(gè)時(shí)候,類(lèi)名可以省略。
關(guān)鍵字return
方法調(diào)用
我們?cè)贛ain()函數(shù)中,調(diào)用Test()函數(shù),我們管Main()函數(shù)稱(chēng)之為調(diào)用者,管Test()函數(shù)稱(chēng)之為被調(diào)用者。
如果被調(diào)用者想要調(diào)用者的值:
1.傳遞參數(shù)
2.使用靜態(tài)字段來(lái)模擬全局變量
(CSharp沒(méi)有全局變量,但是可以用靜態(tài)字段模擬全局變量,靜態(tài)變量的作用域是聲明的類(lèi)當(dāng)中)
如果調(diào)用者想要被調(diào)用者的值:
1.return 返回值;
方法需要注意的地方
1.不管是實(shí)參還是形參,都是在內(nèi)存中開(kāi)辟空間。
2.方法的功能一定要單一。錯(cuò)誤示范:GetMax(int n1, int n2) //判斷閏年
3.方法中最忌諱的就是出現(xiàn)提示用戶(hù)輸入的字眼,所以你需要盡可能地不使用Console.WriteLine()方法來(lái)達(dá)到目的。
out參數(shù)
如果你在一個(gè)方法中,返回多個(gè)相同類(lèi)型的值的時(shí)候,可以考慮返回一個(gè)數(shù)組。
但是,如果返回多個(gè)不同類(lèi)型的值的時(shí)候,返回?cái)?shù)組就不行了,那么這個(gè)時(shí)候,我們可以考慮使用out參數(shù)。
out參數(shù)就側(cè)重于在一個(gè)方法中返回多個(gè)不同類(lèi)型的值。
out參數(shù)要求在方法的內(nèi)部必須為其賦值。
out意思就是返回多余的值。
ref參數(shù)
能夠?qū)⒁粋€(gè)變量帶入一個(gè)方法中進(jìn)行改變,改變完成后,再講改變后的值帶出方法。
ref參數(shù)要求在方法外必須為其賦值,而方法內(nèi)可以不賦值。
params可變參數(shù)
將實(shí)參列表中跟可變參數(shù)數(shù)組類(lèi)型一致的元素都當(dāng)作數(shù)組的元素去處理。
params 參數(shù)必須是形參表中最后一個(gè)參數(shù)。一個(gè)形參列表中只能有一個(gè)params參數(shù)。
方法的重載
方法的重載指的就是方法的名稱(chēng)相同,但是參數(shù)不同。
參數(shù)不同,分為兩種情況
1.如果參數(shù)的個(gè)數(shù)相同,那么參數(shù)的類(lèi)型就不能相同。
2.如果參數(shù)的類(lèi)型相同,那么參數(shù)的個(gè)數(shù)就不能相同。
注:方法的重載跟返回值沒(méi)有關(guān)系
方法的遞歸
方法自己調(diào)用自己
C# 異常
異常是指 語(yǔ)法上沒(méi)有任何錯(cuò)誤,在程序運(yùn)行的過(guò)程當(dāng)中,由于某些原因出現(xiàn)了問(wèn)題,使程序不能再正常的運(yùn)行。
異常捕獲
我們?cè)诔绦蛑薪?jīng)常會(huì)出現(xiàn)各種各樣的異常,你如果想要你的程序變得堅(jiān)強(qiáng)一些。
在你的代碼中應(yīng)該經(jīng)常性的使用try-catch來(lái)進(jìn)行異常捕獲。
哪行代碼有可能出現(xiàn)異常,你就try它一腳。
語(yǔ)法
執(zhí)行過(guò)程:如果try中的代碼沒(méi)有出現(xiàn)異常,那么catch中的代碼不會(huì)執(zhí)行。
如果try中的代碼出現(xiàn)了異常,那怕這行出現(xiàn)異常的代碼后面還有一百行都不會(huì)執(zhí)行了。
而是直接跳到catch中執(zhí)行代碼。
產(chǎn)生隨機(jī)數(shù)
Random r = new Random(); int rNumber = r.Next(1, 11); //左閉右開(kāi)總結(jié)
- 上一篇: bzoj4084 [Sdoi2015]
- 下一篇: clinvar数据库简介