【01_C#入門到精通】新手強(qiáng)烈推薦:C#開發(fā)課程,一整套課程

一、
1.
.cs 類
2.
引用命名空間
3.
Main函數(shù)是程序的主入口,程序?qū)懺贛ain函數(shù)下才可被執(zhí)行
4.
.sln : 解決方案文件
.csproj :項目文件
二、
1.
Console,WriteLine("要打印的內(nèi)容");
Console,ReadKey();//暫停當(dāng)前程序,等待用戶按下任意鍵繼續(xù)
三、
1.Ctrl+K+D 快速對齊
2.Shift+Home Shift+End
3.Ctrl+K+C注釋選中的代碼
4.Ctrl+K+U取消注釋選中的代碼
5.折疊冗余代碼: #region #endregion
四、
1.
儲存整數(shù)100
數(shù)據(jù)類型:整數(shù)
在內(nèi)存中開辟的空間應(yīng)該是整數(shù)類型 int
2.
存儲變量的語法:
變量類型 變量名;
變量名=值;
3."="在這里并不表示等于,而是賦值,表示把等號右邊的值賦值給等號左邊的變量
4.數(shù)據(jù)類型
1)、整數(shù)類型:int 只能存儲整數(shù),不能存儲小數(shù)。
2)、小數(shù)類型:double 既能存儲整數(shù),也能存儲橡樹,小數(shù)點后面的位數(shù) 15~16位。
3)、金錢類型:decimal 用來存儲金錢,值后面需要加上一個m。
4)、字符串類型:string 用來存儲多個文本,也可以存儲空,字符串類型需要被雙引號引起來
5)、字符類型:char 用來存儲單個字符,最多最少只能有一個字符,不能儲存空,字符類型的值需要用單引號引起來
五、
1.給變量命名的時候要滿足兩個規(guī)范:
1)、Camel 駱駝命名規(guī)范,要求變量名首單詞的首字母要小寫,其余每個單詞的首字母要大寫,多用于給變量或字段命名。
highSchoolStudent
2)、Pascal 命名規(guī)范:要求每個單詞的首字母都要大寫,其余字母小寫,多用于給類或者方法命名。
HighSchoolStudent
2.賦值運算符
=; 表示賦值的意思,表示把等號右邊的值賦值給等號左邊的變量。
由等號連接的表達(dá)式稱之為賦值表達(dá)式。
注意:每個表達(dá)式我們都可以求解除一個定值,對于賦值表達(dá)式而言,等號左邊的變量的值,就是整個賦值表達(dá)式的值。
int number=10;
3.+號的作用
1)、連接:當(dāng)+號兩邊有一邊是字符串的時候,+號就起到連接的作用
2)、相加:當(dāng)+兩邊是數(shù)字的時候,+號就起到相加的作用
4.占位符
使用方法:先挖個坑,再填個坑。
使用占位符需要注意的地方:
1、你挖了幾個坑,就填幾個坑,如果你多填了,沒效果
如果你少填了,報異常
2、輸出順序:按照挖坑的順序輸出
3.異常
異常是指:語法上沒有任何錯誤,只不過在程序運行期間,由于某些原因出現(xiàn)了問題,使程序不能再正常運行,也被稱作Bug
4.轉(zhuǎn)義符
轉(zhuǎn)義符值得就是一個'\'+一個特殊的字符,組成了一個具有特殊含義的字符。
\n 表示換行
\" 表示一個英文半角的雙引號
\t 表示一個TAB鍵的空格
\b 表示一個退格鍵,放到字符串的兩邊沒有效果
\\ 表示一個\
@符號
1.取消\在字符串中的轉(zhuǎn)義作用
2.將字符串按照編輯的原格式輸出
5.算數(shù)運算符
+
-
*
/
%
6.類型轉(zhuǎn)換
隱式類型轉(zhuǎn)換:
我們要求等號兩邊參與運算的操作書的類型必須一致,如果不一致,滿足下列條件會發(fā)生自動類型轉(zhuǎn)換,或者稱之為隱式類型轉(zhuǎn)換。
兩種類型兼容
列如:int 和 double 兼容(都是數(shù)字類型)
目標(biāo)類型大于原類型
列如:double > int (小的轉(zhuǎn)大的)
顯式類型轉(zhuǎn)換:
1.兩種類型相兼容 int-->double
2.大的轉(zhuǎn)成小的 double-->int
語法:
(待轉(zhuǎn)換的類型)要轉(zhuǎn)換的值;
總結(jié):
自動類型轉(zhuǎn)換:int-->double
顯示類型轉(zhuǎn)換:double-->int
六、
1.如果兩個變量的類型相兼容,可以使用自動類型轉(zhuǎn)換或者強(qiáng)制類型轉(zhuǎn)換,但是,如果兩個類型的變量不兼容,比如 string 和 int,這時候我們可以使用一個叫做Convert的轉(zhuǎn)換工廠進(jìn)行轉(zhuǎn)換。
注意:使用Convert進(jìn)行轉(zhuǎn)換,也要滿足一個條件:
面子上要過的去,比如:
string a = "123"// 可以轉(zhuǎn)成 int 或 double
string b = "123abc"//不可以轉(zhuǎn)成 int 或 double
2.算數(shù)運算符
++:分為前++和后++,不管是前++還是后++,最終的結(jié)果都是給這個變量加一。
去別表現(xiàn)在表達(dá)式當(dāng)中,如果是前++,則先給這個變量自身加一,然后帶著這個加一后的值去參與運算。
如果是后++,則先拿原值參與運算,運算完成后,再將這個變量自身加一。
--:同上。
3.
對于像++或--這樣只需要一個操作數(shù)就能完成的運算,我們稱之為一元運算符。
+ - * / %對于這些需要兩個或以上才能完成運算的操作符,我們稱之為二元運算符。
一元運算符的優(yōu)先級要高于二元運算符。
如果在一個表達(dá)式當(dāng)中,既有一元運算符,又有二元運算符,我們首先計算一元運算符。
4.關(guān)系運算符
>
<
>=
<=
==
!=
關(guān)系運算符是用來描述兩個事物之間的關(guān)系
由關(guān)系運算符連接的表達(dá)式稱之為關(guān)系表達(dá)式。
5.bool類型
在c#中我們用bool類型來描述對或者錯。
bool類型的值只有兩個 一個true 一個false
6.邏輯運算符
&&邏輯與
||邏輯或
!邏輯非
邏輯運算符兩邊放的一般都是關(guān)系表達(dá)式或者bool類型的值
5>3&&true
3>5||false
!表達(dá)式
邏輯表達(dá)式的結(jié)果同樣也是bool類型
7.復(fù)合賦值運算符
+=
-=
*=
/=
%=
8.順序結(jié)構(gòu):程序從Main函數(shù)進(jìn)入,從上到下一行一行的執(zhí)行,不會落下任何一行。
分支結(jié)構(gòu):if if-else
選擇結(jié)構(gòu):if else-if switch-case
循環(huán)結(jié)構(gòu):while do-while for foreach
9.if語句:
語法:
if(判斷條件)
{
要執(zhí)行的代碼;
}
判斷條件:一般為關(guān)系表達(dá)式或者bool類型的值。
執(zhí)行過程:程序運行到if處,首先判斷if所帶的小括號中的判斷條件,
如果條件成立,也就是返回true,則執(zhí)行if收帶的大括號中的代碼,
如果判斷條件不成立,也就是返回一個false,則跳過if結(jié)構(gòu),繼續(xù)向下執(zhí)行。
if結(jié)構(gòu)的特點,先判斷,再執(zhí)行,有可能一行代碼都不執(zhí)行用于一種情況的判斷
如果你想表示的含義是當(dāng)b的值為true的時候去執(zhí)行if中的代碼,
那么語法上==true可以省略
但是,如果你想表達(dá)的是當(dāng)b==false的時候去執(zhí)行if中的代碼,
那么語法上==false不能省略
10.if-else
語法:
if(判斷條件)
{
執(zhí)行的代碼;
}
else
{
執(zhí)行的代碼;
}
執(zhí)行過程:程序執(zhí)行到if處,首先判斷if所帶的小括號中的判斷條件是否成立,如果成立,也就是返回一個true,則執(zhí)行if所帶的大括號中的代碼,執(zhí)行完成后,跳出if結(jié)構(gòu)。
如果if所帶的小括號中的判斷條件不成立,也就是返回一個false,則跳過if語句,執(zhí)行else所帶的大括號中的語句,執(zhí)行完成后,跳出if-else結(jié)構(gòu)。
if-else結(jié)構(gòu)的特點:先判斷,再執(zhí)行,最少都要執(zhí)行一條代碼。
用于兩種情況的判斷
10.if else-if
作用:用來處理多條件的區(qū)間性的判斷。
語法:
if(判斷條件)
{
要執(zhí)行的代碼;
}
else if(判斷條件)
{
要執(zhí)行的代碼;
}
else if(判斷條件)
{
要執(zhí)行的代碼;
}
else if(判斷條件)
{
要執(zhí)行的代碼;
}
......
else
{
要執(zhí)行的代碼;
}
執(zhí)行過程:程序首先判斷第一個if所帶的小括號中的判斷條件,如果條件成立,也就是返回一個true,則執(zhí)行該if所帶的大括號中的代碼,執(zhí)行完成后,立即跳出if else-if結(jié)構(gòu)。
如果第一個if所帶的判斷條件不成立,也就是返回一個false,則繼續(xù)向下進(jìn)行判斷,依次的判斷每一個if的判斷條件,如果成立,就執(zhí)行該if所帶的大括號中的代碼,如果不成立,則繼續(xù)行俠判斷,如果每個if所帶的判斷條件都不成立,就看當(dāng)前這個if else-if結(jié)構(gòu)中是否存在else。
如果有else的話,則執(zhí)行else中所帶的代碼,如果沒有else,則整個
if else-if結(jié)構(gòu)什么都不做。
else可以省略。
七、
1、異常捕獲
我們在程序中經(jīng)常會出現(xiàn)在各種各樣的異常,你如果想要你的程序變得堅強(qiáng)
一些,在你的代碼中應(yīng)該經(jīng)常性的使用try-catch來進(jìn)行異常捕獲。
哪行代碼有可能出現(xiàn)異常,你就踹它一腳。
語法:
try
{
可能會出現(xiàn)異常的代碼;
......
....
...
}
//try和catch之間不能有其它的代碼
catch
{
出現(xiàn)異常后要執(zhí)行的代碼;
}
執(zhí)行過程:如果try中的代碼沒有出現(xiàn)異常,那么catch中的代碼不會執(zhí)行。
如果try中的代碼出現(xiàn)了異常,哪怕這行出現(xiàn)異常的代碼后面還有一百行甚至
更多,都不會執(zhí)行了,而是直接跳到catch中執(zhí)行代碼
2、變量的作用域
變量的作用域就是你能夠使用到這個變量的范圍。
變量的作用域一般從聲明它的那個括號開始到那個括號所對應(yīng)的括號結(jié)束。
在這個范圍內(nèi),我們可以訪問并使用變量,超出這個范圍就訪問不到了
3、switch-case
用來處理多條件的定值判斷。
語法:
switch(變量或者表達(dá)式的值)
{
case 值1;要執(zhí)行的代碼;
break;
case 值2;要執(zhí)行的代碼;
break;
case 值3;要執(zhí)行的代碼;
break;
......
default:要執(zhí)行的代碼;
break;
}
執(zhí)行過程:程序執(zhí)行到switch處,首先將括號中變量或者表達(dá)式的值計算來,
然后拿著這個值依次跟每個case后面的值進(jìn)行匹配,一旦匹配成功,則執(zhí)行該case所帶的代碼,執(zhí)行完成后,遇到break,跳出switch-case結(jié)構(gòu)。
如果跟每個case所帶的值都不匹配,就看當(dāng)前這個switch-case結(jié)構(gòu)中是否存在default,如果有default,則執(zhí)行default中的語句,如果沒有default,則switch-case結(jié)構(gòu)什么都不做。
4、循環(huán)結(jié)構(gòu)
while循環(huán):
while(循環(huán)條件)
{
循環(huán)體;
}
執(zhí)行過程:程序首先運行到while處,首先判斷while所帶的小括號內(nèi)的循環(huán)條
件是否成立,如果成立的話,也就是返回一個true,則執(zhí)行循環(huán)體,執(zhí)行完一遍循環(huán)體后,再次回到循環(huán)條件進(jìn)行判斷,如果依然陳麗,則繼續(xù)執(zhí)行循環(huán)體
如果不成立,則跳出while循環(huán)。
在while循環(huán)當(dāng)中,一般總有那么一行代碼,能夠改變循環(huán)條件,使之終有一
天不再成立,如果沒有那么一行代碼能夠改變循環(huán)條件,也就是循環(huán)條件永遠(yuǎn)都成立,我們稱這種循環(huán)叫做死循環(huán)。
最簡單最倉用的死循環(huán):
while(true)
{
循環(huán)體;
}
特點:先判斷,再執(zhí)行,有可能一遍循環(huán)都不執(zhí)行。
5、break
1)、可以跳出switch-case結(jié)構(gòu)。
2)、可以跳出當(dāng)前循環(huán)。
break一般不單獨使用,而是跟著if判斷一起使用,表示,當(dāng)滿足某些條件的
時候,就不再循環(huán)了。
6、do-while循環(huán)
語法:
do
{
循環(huán)體;
}while(循環(huán)條件);
執(zhí)行過程:程序首先會執(zhí)行do中的循環(huán)體,執(zhí)行完成后,去判斷do-while循環(huán)的循環(huán)條件,如果成立,則繼續(xù)執(zhí)行do中的循環(huán)體,如果不成立,則跳出do-while循環(huán)。
特點:先循環(huán),在判斷,最少執(zhí)行一遍循環(huán)體。
八、
1)、程序調(diào)試
1)、寫完一段程序后,想看一下這段程序的執(zhí)行過程
2)、當(dāng)你寫完這段程序后,發(fā)現(xiàn)程序并沒有按照你想象的樣子去執(zhí)行
調(diào)試方法:
1)、F11逐語句調(diào)試(單步調(diào)試)
2)、F10逐過程調(diào)試
3)、斷點調(diào)試
2、for循環(huán)
語法:
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í)行過程:程序首先執(zhí)行表達(dá)式1,聲明了一個循環(huán)變量用來記錄循環(huán)的數(shù),然后執(zhí)行表達(dá)式2,判斷循環(huán)條件是否成立,如果表達(dá)式2返回的結(jié)果為true,則執(zhí)行循環(huán)體,如果不成立,則跳出for循環(huán)。
4、三元表達(dá)式
語法:
表達(dá)式1?表達(dá)式2:表達(dá)式3;
表達(dá)式1一般為一個關(guān)系表達(dá)式。
如果表達(dá)式1的值為true,那么表達(dá)式2的值就是整個三元表達(dá)式的值。
如果表達(dá)式1的值為false,那么表達(dá)式3的值就是整個三元表達(dá)式的值。
注意:表達(dá)式2的結(jié)果必須跟表達(dá)式3的結(jié)果類型一致,并且也要跟整個三元表達(dá)式的結(jié)果類型一致。
九、
1、常量
聲明常量的語法:
const 變量類型 變量名=值;
6、枚舉
語法:
[public] enum 枚舉名
{
值1,
值2,
值3,
......
}
public:訪問修飾符,公開的公共的,哪兒都可以訪問。
enum:關(guān)鍵字,聲明枚舉的關(guān)鍵字
枚舉名:要符合Pascal命名規(guī)范
將枚舉聲明到命名空間下面,類的外面,表示這個命名空間下,所有的類都可以使用這個枚舉
枚舉就是一個變量類型,只是枚舉聲明、賦值、使用的方式跟那些普通的變量類型不一樣
7、所有的類型都能轉(zhuǎn)換成string類型,調(diào)用ToString()
8、結(jié)構(gòu)
可以幫助我們一次性聲明多個不同類型德變量。
語法:
[public] struct 結(jié)構(gòu)名
{
成員;//字段
}
變量在程序運行期間只能存儲一個值,而字段可以存儲多個值。
9、數(shù)組
一次性存儲多個相同類型的變量。
語法:
數(shù)組類型[] 數(shù)組名=new 數(shù)組類型[數(shù)組長度];
10、冒泡排序:就是將一個數(shù)組中的元素按照從大到小或者從小到大的順序進(jìn)行排列。
11、方法
函數(shù)就是將一堆代碼進(jìn)行重用的一種機(jī)制。
函數(shù)的語法:
[public] static 返回值類型 方法名([參數(shù)列表])
{
方法體;
}
public:訪問修飾符,公開的,公共的,哪兒都可以訪問。
static:靜態(tài)的
返回值類型:如果不需要返回值,寫void
方法名:pascal 每個單詞的首字母都大寫,其余字母小寫
參數(shù)列表:完成這個方法所必須要提供給這個方法的條件,如果沒有參數(shù),小括號也不能省略。
方法寫好后,如果想要被執(zhí)行,必須要在Main()函數(shù)中調(diào)用。
方法的調(diào)用語法:
類名.方法名();
12、return
1.在方法中返回要返回的值。
2.立即結(jié)束本次方法。
十、
1、我們在Main()函數(shù)中,調(diào)用Test()函數(shù),我們管Main()函數(shù)稱之為調(diào)用者,
管Test()函數(shù)稱之為被調(diào)用者。
如果被調(diào)用者想要得到調(diào)用者的值:
1.傳遞參數(shù)。
2.使用靜態(tài)字段來模擬全局變量。
1.返回值
2、不管是形參還是實參,都是在內(nèi)存中開辟了空間的。
3、方法的功能一定要單一。
方法中最忌諱的就是出現(xiàn)讓用戶輸入等字眼
4、out、ref、params
1.out參數(shù)。
如果你在一個方法中,返回多個相同類型的值的時候,可以考慮返回一個數(shù)組。
但是,如果返回多個不同類型的值的時候,返回數(shù)組就不行了,那么這個時候,我們可以考慮使用out參數(shù)。
out參數(shù)就側(cè)重于在一個方法中可以返回多個不同類型的值。
2.ref參數(shù)
能夠?qū)⒁粋€變量帶入一個方法中進(jìn)行改變,改變完成后,再將改變后的值帶出方法。
ref參數(shù)要求在方法外必須為其賦值,而方法內(nèi)可以不賦值。
3.params可變參數(shù)
將實參列表中跟可變參數(shù)類型一致的元素都當(dāng)作數(shù)組的元素去處理。
params可變參數(shù)必須是形參列表中的最后一個元素。
5、方法的重載
概念:方法的重載指的就是方法的名稱相同,但是參數(shù)不同。
1.如果參數(shù)的個數(shù)相同,那么參數(shù)的類型就不能相同。
2.如果參數(shù)的類型相同,那么參數(shù)的個數(shù)就不能形同。
*方法的重載跟返回值沒有關(guān)系。
6、方法的遞歸
方法自己調(diào)用自己。
找出一個文件夾中所有的文件。
十一、面向?qū)ο?/p>
1、面向過程------>面向?qū)ο?/p>
面向過程:面向的是完成這件事的過程,強(qiáng)調(diào)的是完成這件事的動作
1.打開冰箱門
2.把大象塞進(jìn)冰箱
3.關(guān)閉冰箱門
如果我們用面向過程的思想來解決這件事兒,當(dāng)執(zhí)行這件事的人不同的時候,我們需要為每一個不同的人量身定做解決事情的方法
面向?qū)ο螅赫覀€對象幫你做事
把大象塞進(jìn)冰箱里
1.冰箱門可以被打開
2.大象可以被塞進(jìn)冰箱里
3.冰箱門可以被關(guān)閉
面向?qū)ο笠庠趯懗鲆粋€通用的代碼,屏蔽差異
關(guān)門
面向過程:關(guān)門
張三:一腳把門踹緊了
李四:輕輕的把門帶上了
王五:門沒關(guān)嚴(yán),留了個尾巴
面向?qū)ο螅宏P(guān)門
門可以被關(guān)閉
姓名:孫全
特征:
性別:男
身高:180cm
體重:70kg
年齡:22歲
行為:
吃喝拉撒睡一切正常 健康
吃喝嫖賭抽
特征:
姓名:顏德偉
性別:男
身高:160cm
體重:60kg
年齡:18
行為:
腦殘 身體健康
我們在代碼中描述一個對象,通過描述這個對象的屬性和方法
對象必須是看的見摸得著的
燈:屬性和方法
屬性:
外形:圓的
功耗:500w
顏色:白色
牌子:xx
方法:發(fā)光
電風(fēng)扇:屬性、方法
外形:三個葉片
顏色:白色
品牌:xx
方法:轉(zhuǎn)動、扇風(fēng)
我們把這些具有相同屬性和相同方法的對象進(jìn)行進(jìn)一步的封裝,抽象出來“類”這個概念
類是一張圖紙,確定了對象具有的屬性和方法
對象是根據(jù)類創(chuàng)建出來的
類就是一個蓋大樓的圖紙,對象就是蓋出來的大樓