最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

c#入門到高級(全)

2022-11-06 21:13 作者:太空の羊  | 我要投稿

一、

1.

.cs 類


2.

引用命名空間


3.

Main函數是程序的主入口,程序寫在Main函數下才可被執(zhí)行


4.

.sln : 解決方案文件

.csproj :項目文件


二、

1.

Console,WriteLine("要打印的內容");

Console,ReadKey();//暫停當前程序,等待用戶按下任意鍵繼續(xù)


三、

1.Ctrl+K+D 快速對齊

2.Shift+Home Shift+End

3.Ctrl+K+C注釋選中的代碼

4.Ctrl+K+U取消注釋選中的代碼

5.折疊冗余代碼: #region #endregion


四、

1.

儲存整數100

數據類型:整數

在內存中開辟的空間應該是整數類型 int


2.

存儲變量的語法:

變量類型 變量名;

變量名=值;


3."="在這里并不表示等于,而是賦值,表示把等號右邊的值賦值給等號

左邊的變量


4.數據類型

1)、整數類型:int 只能存儲整數,不能存儲小數。

2)、小數類型:double 既能存儲整數,也能存儲橡樹,小數點后面的位

數 15~16位。

3)、金錢類型:decimal 用來存儲金錢,值后面需要加上一個m。

4)、字符串類型:string 用來存儲多個文本,也可以存儲空,字符串類

型需要被雙引號引起來

5)、字符類型:char 用來存儲單個字符,最多最少只能有一個字符,不

能儲存空,字符類型的值需要用單引號引起來


三、

1.給變量命名的時候要滿足兩個規(guī)范:

1)、Camel 駱駝命名規(guī)范,要求變量名首單詞的首字母要小寫,其余每

個單詞的首字母要大寫,多用于給變量或字段命名。

highSchoolStudent

2)、Pascal 命名規(guī)范:要求每個單詞的首字母都要大寫,其余字母小寫,

多用于給類或者方法命名。

HighSchoolStudent


2.賦值運算符

=; 表示賦值的意思,表示把等號右邊的值賦值給等號左邊的變量。

由等號連接的表達式稱之為賦值表達式。

注意:每個表達式我們都可以求解除一個定值,對于賦值表達式而言,等

號左邊的變量的值,就是整個賦值表達式的值。

int number=10;


3.+號的作用

1)、連接:當+號兩邊有一邊是字符串的時候,+號就起到連接的作用

2)、相加:當+兩邊是數字的時候,+號就起到相加的作用


4.占位符

使用方法:先挖個坑,再填個坑。

使用占位符需要注意的地方:

1、你挖了幾個坑,就填幾個坑,如果你多填了,沒效果

???????????????如果你少填了,報異常

2、輸出順序:按照挖坑的順序輸出


3.異常

異常是指:語法上沒有任何錯誤,只不過在程序運行期間,由于某些原因

出現了問題,使程序不能再正常運行,也被稱作Bug


4.轉義符

轉義符值得就是一個'\'+一個特殊的字符,組成了一個具有特殊含義的字

符。


\n 表示換行

\" 表示一個英文半角的雙引號

\t 表示一個TAB鍵的空格

\b 表示一個退格鍵,放到字符串的兩邊沒有效果

\\ 表示一個\


@符號

1.取消\在字符串中的轉義作用

2.將字符串按照編輯的原格式輸出


5.算數運算符

+

-

*

/

%


6.類型轉換

隱式類型轉換:

我們要求等號兩邊參與運算的操作書的類型必須一致,如果不一致,滿足

下列條件會發(fā)生自動類型轉換,或者稱之為隱式類型轉換。

兩種類型兼容

列如:int 和 double 兼容(都是數字類型)

目標類型大于原類型

列如:double > int (小的轉大的)


顯式類型轉換:

1.兩種類型相兼容 int-->double

2.大的轉成小的 double-->int

語法:

(待轉換的類型)要轉換的值;


總結:

自動類型轉換:int-->double

顯示類型轉換:double-->int


五、

1.如果兩個變量的類型相兼容,可以使用自動類型轉換或者強制類型轉換,

但是,如果兩個類型的變量不兼容,比如 string 和 int,這時候我們可

以使用一個叫做Convert的轉換工廠進行轉換。

注意:使用Convert進行轉換,也要滿足一個條件:

面上要過的去,比如:

string a = "123"// 可以轉成 int 或 double

string b = "123abc"//不可以轉成 int 或 double


2.算數運算符

++:分為前++和后++,不管是前++還是后++,最終的結果都是給這

個變量加一。

去別表現在表達式當中,如果是前++,則先給這個變量自身加一,然后

帶著這個加一后的值去參與運算。

如果是后++,則先拿原值參與運算,運算完成后,再將這個變量自身加

一。

--:同上。


3.

對于像++或--這樣只需要一個操作數就能完成的運算,我們稱之為一元

運算符。

+ - * / %對于這些需要兩個或以上才能完成運算的操作符,我們稱之為

二元運算符。

一元運算符的優(yōu)先級要高于二元運算符。

如果在一個表達式當中,既有一元運算符,又有二元運算符,我們首先計

算一元運算符。


4.關系運算符

>

<

>=

<=

==

!=

關系運算符是用來描述兩個事物之間的關系

由關系運算符連接的表達式稱之為關系表達式。


5.bool類型

在c#中我們用bool類型來描述對或者錯。

bool類型的值只有兩個 一個true 一個false


6.邏輯運算符

&&邏輯與

||邏輯或

!邏輯非


邏輯運算符兩邊放的一般都是關系表達式或者bool類型的值

5>3&&true


3>5||false


!表達式

邏輯表達式的結果同樣也是bool類型


7.復合賦值運算符

+=

-=

*=

/=

%=


8.順序結構:程序從Main函數進入,從上到下一行一行的執(zhí)行,不會落下

任何一行。

分支結構:if if-else

選擇結構:if else-if switch-case

循環(huán)結構:while do-while for foreach


9.if語句:

語法:

if(判斷條件)

{

要執(zhí)行的代碼;

}

判斷條件:一般為關系表達式或者bool類型的值。

執(zhí)行過程:程序運行到if處,首先判斷if所帶的小括號中的判斷條件,

如果條件成立,也就是返回true,則執(zhí)行if收帶的大括號中的代碼,

如果判斷條件不成立,也就是返回一個false,則跳過if結構,繼續(xù)向下

執(zhí)行。


if結構的特點,先判斷,再執(zhí)行,有可能一行代碼都不執(zhí)行

用于一種情況的判斷


如果你想表示的含義是當b的值為true的時候去執(zhí)行if中的代碼,

那么語法上==true可以省略

但是,如果你想表達的是當b==false的時候去執(zhí)行if中的代碼,

語法上==false不能省略


10.if-else

語法:

if(判斷條件)

{

執(zhí)行的代碼;

}

else

{

執(zhí)行的代碼;

}

執(zhí)行過程:程序執(zhí)行到if處,首先判斷if所帶的小括號中的判斷條件是否

成立,

如果成立,也就是返回一個true,則執(zhí)行if所帶的大括號中的代碼,

執(zhí)行完成后,跳出if結構。

如果if所帶的小括號中的判斷條件不成立,也就是返回一個false,

則跳過if語句,執(zhí)行else所帶的大括號中的語句,執(zhí)行完成后,

跳出if-else結構。


if-else結構的特點:先判斷,再執(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

結構。

如果第一個if所帶的判斷條件不成立,也就是返回一個false,則繼續(xù)向

下進行判斷,依次的判斷每一個if的判斷條件,如果成立,就執(zhí)行該if所

帶的大括號中的代碼,如果不成立,則繼續(xù)行俠判斷,

如果每個if所帶的判斷條件都不成立,就看當前這個if else-if結構中是

否存在else。

如果有else的話,則執(zhí)行else中所帶的代碼,如果沒有else,則整個

if else-if結構什么都不做。

else可以省略。


一、

1.

.cs 類


2.

引用命名空間


3.

Main函數是程序的主入口,程序寫在Main函數下才可被執(zhí)行


4.

.sln : 解決方案文件

.csproj :項目文件


二、

1.

Console,WriteLine("要打印的內容");

Console,ReadKey();//暫停當前程序,等待用戶按下任意鍵繼續(xù)


三、

1.Ctrl+K+D 快速對齊

2.Shift+Home Shift+End

3.Ctrl+K+C注釋選中的代碼

4.Ctrl+K+U取消注釋選中的代碼

5.折疊冗余代碼: #region #endregion


四、

1.

儲存整數100

數據類型:整數

在內存中開辟的空間應該是整數類型 int


2.

存儲變量的語法:

變量類型 變量名;

變量名=值;


3."="在這里并不表示等于,而是賦值,表示把等號右邊的值賦值給等號

左邊的變量


4.數據類型

1)、整數類型:int 只能存儲整數,不能存儲小數。

2)、小數類型:double 既能存儲整數,也能存儲橡樹,小數點后面的位

數 15~16位。

3)、金錢類型:decimal 用來存儲金錢,值后面需要加上一個m。

4)、字符串類型:string 用來存儲多個文本,也可以存儲空,字符串類

型需要被雙引號引起來

5)、字符類型:char 用來存儲單個字符,最多最少只能有一個字符,不

能儲存空,字符類型的值需要用單引號引起來


三、

1.給變量命名的時候要滿足兩個規(guī)范:

1)、Camel 駱駝命名規(guī)范,要求變量名首單詞的首字母要小寫,其余每

個單詞的首字母要大寫,多用于給變量或字段命名。

highSchoolStudent

2)、Pascal 命名規(guī)范:要求每個單詞的首字母都要大寫,其余字母小寫,

多用于給類或者方法命名。

HighSchoolStudent


2.賦值運算符

=; 表示賦值的意思,表示把等號右邊的值賦值給等號左邊的變量。

由等號連接的表達式稱之為賦值表達式。

注意:每個表達式我們都可以求解除一個定值,對于賦值表達式而言,等

號左邊的變量的值,就是整個賦值表達式的值。

int number=10;


3.+號的作用

1)、連接:當+號兩邊有一邊是字符串的時候,+號就起到連接的作用

2)、相加:當+兩邊是數字的時候,+號就起到相加的作用


4.占位符

使用方法:先挖個坑,再填個坑。

使用占位符需要注意的地方:

1、你挖了幾個坑,就填幾個坑,如果你多填了,沒效果

???????????????如果你少填了,報異常

2、輸出順序:按照挖坑的順序輸出


3.異常

異常是指:語法上沒有任何錯誤,只不過在程序運行期間,由于某些原因

出現了問題,使程序不能再正常運行,也被稱作Bug


4.轉義符

轉義符值得就是一個'\'+一個特殊的字符,組成了一個具有特殊含義的字

符。


\n 表示換行

\" 表示一個英文半角的雙引號

\t 表示一個TAB鍵的空格

\b 表示一個退格鍵,放到字符串的兩邊沒有效果

\\ 表示一個\


@符號

1.取消\在字符串中的轉義作用

2.將字符串按照編輯的原格式輸出


5.算數運算符

+

-

*

/

%


6.類型轉換

隱式類型轉換:

我們要求等號兩邊參與運算的操作書的類型必須一致,如果不一致,滿足

下列條件會發(fā)生自動類型轉換,或者稱之為隱式類型轉換。

兩種類型兼容

列如:int 和 double 兼容(都是數字類型)

目標類型大于原類型

列如:double > int (小的轉大的)


顯式類型轉換:

1.兩種類型相兼容 int-->double

2.大的轉成小的 double-->int

語法:

(待轉換的類型)要轉換的值;


總結:

自動類型轉換:int-->double

顯示類型轉換:double-->int


五、

1.如果兩個變量的類型相兼容,可以使用自動類型轉換或者強制類型轉換,

但是,如果兩個類型的變量不兼容,比如 string 和 int,這時候我們可

以使用一個叫做Convert的轉換工廠進行轉換。

注意:使用Convert進行轉換,也要滿足一個條件:

面上要過的去,比如:

string a = "123"// 可以轉成 int 或 double

string b = "123abc"//不可以轉成 int 或 double


2.算數運算符

++:分為前++和后++,不管是前++還是后++,最終的結果都是給這

個變量加一。

去別表現在表達式當中,如果是前++,則先給這個變量自身加一,然后

帶著這個加一后的值去參與運算。

如果是后++,則先拿原值參與運算,運算完成后,再將這個變量自身加

一。

--:同上。


3.

對于像++或--這樣只需要一個操作數就能完成的運算,我們稱之為一元

運算符。

+ - * / %對于這些需要兩個或以上才能完成運算的操作符,我們稱之為

二元運算符。

一元運算符的優(yōu)先級要高于二元運算符。

如果在一個表達式當中,既有一元運算符,又有二元運算符,我們首先計

算一元運算符。


4.關系運算符

>

<

>=

<=

==

!=

關系運算符是用來描述兩個事物之間的關系

由關系運算符連接的表達式稱之為關系表達式。


5.bool類型

在c#中我們用bool類型來描述對或者錯。

bool類型的值只有兩個 一個true 一個false


6.邏輯運算符

&&邏輯與

||邏輯或

!邏輯非


邏輯運算符兩邊放的一般都是關系表達式或者bool類型的值

5>3&&true


3>5||false


!表達式

邏輯表達式的結果同樣也是bool類型


7.復合賦值運算符

+=

-=

*=

/=

%=


8.順序結構:程序從Main函數進入,從上到下一行一行的執(zhí)行,不會落下

任何一行。

分支結構:if if-else

選擇結構:if else-if switch-case

循環(huán)結構:while do-while for foreach


9.if語句:

語法:

if(判斷條件)

{

要執(zhí)行的代碼;

}

判斷條件:一般為關系表達式或者bool類型的值。

執(zhí)行過程:程序運行到if處,首先判斷if所帶的小括號中的判斷條件,

如果條件成立,也就是返回true,則執(zhí)行if收帶的大括號中的代碼,

如果判斷條件不成立,也就是返回一個false,則跳過if結構,繼續(xù)向下

執(zhí)行。


if結構的特點,先判斷,再執(zhí)行,有可能一行代碼都不執(zhí)行

用于一種情況的判斷


如果你想表示的含義是當b的值為true的時候去執(zhí)行if中的代碼,

那么語法上==true可以省略

但是,如果你想表達的是當b==false的時候去執(zhí)行if中的代碼,

語法上==false不能省略


10.if-else

語法:

if(判斷條件)

{

執(zhí)行的代碼;

}

else

{

執(zhí)行的代碼;

}

執(zhí)行過程:程序執(zhí)行到if處,首先判斷if所帶的小括號中的判斷條件是否

成立,

如果成立,也就是返回一個true,則執(zhí)行if所帶的大括號中的代碼,

執(zhí)行完成后,跳出if結構。

如果if所帶的小括號中的判斷條件不成立,也就是返回一個false,

則跳過if語句,執(zhí)行else所帶的大括號中的語句,執(zhí)行完成后,

跳出if-else結構。


if-else結構的特點:先判斷,再執(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

結構。

如果第一個if所帶的判斷條件不成立,也就是返回一個false,則繼續(xù)向

下進行判斷,依次的判斷每一個if的判斷條件,如果成立,就執(zhí)行該if所

帶的大括號中的代碼,如果不成立,則繼續(xù)行俠判斷,

如果每個if所帶的判斷條件都不成立,就看當前這個if else-if結構中是

否存在else。

如果有else的話,則執(zhí)行else中所帶的代碼,如果沒有else,則整個

if else-if結構什么都不做。

else可以省略。


1)、程序調試

1)、寫完一段程序后,想看一下這段程序的執(zhí)行過程

2)、當你寫完這段程序后,發(fā)現程序并沒有按照你想象的樣子去執(zhí)行


調試方法:

1)、F11逐語句調試(單步調試)

2)、F10逐過程調試

3)、斷點調試


2、for循環(huán)

語法:

for(表達式1;表達式2;表達式3;)

{

循環(huán)體;

}

表達式1一般為聲明循環(huán)變量,記錄循環(huán)的次數(int i=0;)

表達式2一般為循環(huán)條件(i<10)

表達式3一般為改變循環(huán)條件的代碼,使循環(huán)條件終有一天不在成立(i++)

執(zhí)行過程:程序首先執(zhí)行表達式1,聲明了一個循環(huán)變量用來記錄循環(huán)的次數,

然后執(zhí)行表達式2,判斷循環(huán)條件是否成立,如果表達式2返回的結果為true,

則執(zhí)行循環(huán)體,如果不成立,則跳出for循環(huán)。


4、三元表達式

語法:

表達式1?表達式2:表達式3;

表達式1一般為一個關系表達式。

如果表達式1的值為true,那么表達式2的值就是整個三元表達式的值。

如果表達式1的值為false,那么表達式3的值就是整個三元表達式的值。

注意:表達式2的結果必須跟表達式3的結果類型一致,并且也要跟整個三元表

達式的結果類型一致。


1、常量

聲明常量的語法:

const 變量類型 變量名=值;


6、枚舉

語法:

[public] enum 枚舉名

{

值1,

值2,

值3,

......

}

public:訪問修飾符,公開的公共的,哪兒都可以訪問。

enum:關鍵字,聲明枚舉的關鍵字

枚舉名:要符合Pascal命名規(guī)范


將枚舉聲明到命名空間下面,類的外面,表示這個命名空間下,所有的類都可

以使用這個枚舉


枚舉就是一個變量類型,只是枚舉聲明、賦值、使用的方式跟那些普通的變量

類型不一樣


7、所有的類型都能轉換成string類型,調用ToString()


8、結構

可以幫助我們一次性聲明多個不同類型德變量。

語法:

[public] struct 結構名

{

成員;//字段

}

變量在程序運行期間只能存儲一個值,而字段可以存儲多個值。


9、數組

一次性存儲多個相同類型的變量。

語法:

數組類型[] 數組名=new 數組類型[數組長度];


10、冒泡排序:就是將一個數組中的元素按照從大到小或者從小到大的順序進

行排列。


11、方法

函數就是將一堆代碼進行重用的一種機制。

函數的語法:

[public] static 返回值類型 方法名([參數列表])

{

方法體;

}

public:訪問修飾符,公開的,公共的,哪兒都可以訪問。

static:靜態(tài)的

返回值類型:如果不需要返回值,寫void

方法名:pascal 每個單詞的首字母都大寫,其余字母小寫

參數列表:完成這個方法所必須要提供給這個方法的條件,如果沒有參數,小

括號也不能省略。


方法寫好后,如果想要被執(zhí)行,必須要在Main()函數中調用。

方法的調用語法:

類名.方法名();


12、return

1.在方法中返回要返回的值。

2.立即結束本次方法。


一、我們在Main()函數中,調用Test()函數,我們管Main()函數稱之為調用者,

管Test()函數稱之為被調用者。

如果被調用者想要得到調用者的值:

1.傳遞參數。

2.使用靜態(tài)字段來模擬全局變量。

1.返回值


二、不管是形參還是實參,都是在內存中開辟了空間的。


三、方法的功能一定要單一。

方法中最忌諱的就是出現讓用戶輸入等字眼


四、out、ref、params

1.out參數。

如果你在一個方法中,返回多個相同類型的值的時候,可以考慮返回一個數組。

但是,如果返回多個不同類型的值的時候,返回數組就不行了,那么這個時候,我們可以考慮使用out參數。

out參數就側重于在一個方法中可以返回多個不同類型的值。


2.ref參數

能夠將一個變量帶入一個方法中進行改變,改變完成后,再將改變后的值帶出方法。

ref參數要求在方法外必須為其賦值,而方法內可以不賦值。


3.params可變參數

將實參列表中跟可變參數類型一致的元素都當作數組的元素去處理。

params可變參數必須是形參列表中的最后一個元素。


五、方法的重載

概念:方法的重載指的就是方法的名稱相同,但是參數不同。

1.如果參數的個數相同,那么參數的類型就不能相同。

2.如果參數的類型相同,那么參數的個數就不能形同。

*方法的重載跟返回值沒有關系。


六、方法的遞歸


方法自己調用自己。


找出一個文件夾中所有的文件。


一、面向過程------>面向對象


面向過程:面向的是完成這件事的過程,強調的是完成這件事的動作


1.打開冰箱門

2.把大象塞進冰箱

3.關閉冰箱門


如果我們用面向過程的思想來解決這件事兒,當執(zhí)行這件事的人不同的時候,我們需要為每一個不同的人量身定做解決事情的方法



面向對象:找個對象幫你做事

把大象塞進冰箱里

1.冰箱門可以被打開

2.大象可以被塞進冰箱里

3.冰箱門可以被關閉


面向對象意在寫出一個通用的代碼,屏蔽差異



關門

面向過程:關門

張三:一腳把門踹緊了

李四:輕輕的把門帶上了

王五:門沒關嚴,留了個尾巴


面向對象:關門

門可以被關閉



姓名:孫全

特征:

性別:男

身高:180cm

體重:70kg

年齡:22歲

行為:

吃喝拉撒睡一切正常 健康

吃喝嫖賭抽


特征:

姓名:顏德偉

性別:男

身高:160cm

體重:60kg

年齡:18

行為:

腦殘 身體健康



我們在代碼中描述一個對象,通過描述這個對象的屬性和方法

對象必須是看的見摸得著的


燈:屬性和方法

屬性:

外形:圓的

功耗:500w

顏色:白色

牌子:xx

方法:發(fā)光


電風扇:屬性、方法

外形:三個葉片

顏色:白色

品牌:xx

方法:轉動、扇風



我們把這些具有相同屬性和相同方法的對象進行進一步的封裝,抽象出來“類”這個概念

類是一張圖紙,確定了對象具有的屬性和方法

對象是根據類創(chuàng)建出來的

類就是一個蓋大樓的圖紙,對象就是蓋出來的大樓


2、類

語法:

[public] class <類名>

{

字段;

屬性;

方法;

}

寫好了一個類后,我們需要創(chuàng)建這個類的對象,

我們稱創(chuàng)建這個類的過程叫做實例化。

使用關鍵字new


this:表示當前這個類的對象

類是不占內存的,而對象是占內存的



3、屬性

屬性的作用就是保護字段、對字段的賦值和取值進行限定

屬性的本質就是兩個方法,一個叫 get ( ) 一個叫 set ( )?

既有get( )也有set( )我們稱之為可讀可寫屬性

只有get( )沒有set( )我們稱之為只讀屬性

沒有get( )只有set( )我們稱之為只寫屬性



Field 字段

Method 方法

property 屬性


4、訪問修飾符

public:公開的公共的,在哪兒都能訪問。

private:私有的,只能在當前類內部進行訪問,出了這個類就訪問不到了


5、

當我們創(chuàng)建好一個類的對象后。需要給這個對象的每個屬性去賦值

我們管這個過程稱之為對象的初始化


6、靜態(tài)和非靜態(tài)的區(qū)別

1.在非靜態(tài)類中,既可以有實例成員(非靜態(tài)成員),也可以有靜態(tài)成員

2.在調用實例成員的時候,需要使用對象名.實例成員;

??在調用靜態(tài)成員的時候,需要使用類名.靜態(tài)成員名;

總結:靜態(tài)成員必須使用類名去調用,而實例成員使用對象名調用。

?????靜態(tài)函數中,只能訪問靜態(tài)成員,不允許訪問實例成員。

?????靜態(tài)函數中,既可以使用靜態(tài)成員,也可以使用實例成員

?????靜態(tài)類中只允許有靜態(tài)成員,不允許出現實例成員


使用:

1.如果你想要你的類當作一個“工具類”去使用,這個時候可以考慮將類寫成靜態(tài)的

2.靜態(tài)類在整個項目中資源共享

只有在程序結束之后,靜態(tài)類才會釋放資源


堆 棧 靜態(tài)存儲區(qū)


釋放資源 GC Garbage Collection 垃圾回收器


7、構造函數

作用:幫助我們初始化對象(給對象的每個屬性依次的賦值)

構造函數是一個特殊的方法:

1.構造函數沒有返回值,連void也不能寫。

2.構造函數的名稱必須和類名一樣。


創(chuàng)建對象的時候會執(zhí)行構造函數

構造函數是可以重載的

***

類當中會有一個默認的無參數的構造函數,當你寫了一個新的構造函數之后,不管是不是無參數的,那個默認的無參數的構造函數都被干掉了。


8、new關鍵字

Person zsPerson=new Person( );

new幫我們做了3件事兒:

1.在內存中開辟一塊空間

2.在開辟的空間中創(chuàng)建對象

3.調用對象的構造函數進行初始化對象


9、this關鍵字

1.代表當前類的對象

2.在類當中顯示的調用本類的構造函數 :this


10、析構函數

當程序結束時,析構函數才執(zhí)行,幫助我們釋放資源,不寫析構函數GC會自動清理釋放資源

語法:

~類名( ) { }


二、面向對象繼承


1、命名空間

可以認為類是屬于命名空間的。

如果在當前項目中沒有這個類的命名空間,需要我們手動導入這個類所在的命名空間(類似C語言的頭文件,python里的import)


2、在一個項目中引用另一個項目的類

1.添加引用

2.引用命名空間


3、值傳遞和引用傳遞

區(qū)別

1.值傳遞和引用傳遞在內存上存儲的地方不一樣。

2.在傳遞值類型和傳遞引用類型的時候,傳遞的方式不一樣。

值類型我們稱之為值傳遞,引用類型我們稱之為引用傳遞。

目前學過的值類型和引用類型:

值類型:int、double、bool、char、decimal、struct、enum

引用類型:string、數組、自定義類

存儲:

值類型的值是存儲在內存的棧當中的。

引用類型的值是存儲在內存的堆中的。


3、字符串

1.字符串的不可變性

當你給一個字符串重新賦值之后,舊值并沒有被銷毀,而是重新開辟一塊內存空間存儲新值。


當程序結束后,GC掃描整個內存,如果發(fā)現有的空間沒有被指向,則立即把它銷毀。


2.我們可以將字符串看作是char類型的一個只讀數組。

ToCharArray( );將字符串轉換為char數組

new string( char[ ] chs);能夠將char數組轉換為字符串


4、字符串提供的各種方法

1.Length:獲得當前字符串中字符的個數

2.ToUpper( )將字符串轉換為大寫形式

3.ToLower( )將字符串轉換為小寫形式

4.Equals(lessonTwo,StringComparison.OrdinalIgnoreCase)比較兩個字符串,并忽略大小寫

5.Split( )分割字符串,返回字符串類型的數組

6.Substring( )截取字符串,在截取的時候包含要截取的那個位置

7.Indexof( )判斷某個字符串中第一次出現的位置,如果沒有則返回-1

8.LastIndexOf( )確定字符串中最后一次出現的字符串,如果沒有則返回-1

9.StartsWith( )判斷以...開始,結束:判斷以…結束

11. Replace( )將字符串中某個字符替換成一個新的字符串

12.Contains( )確定字符串是否包含指定的字符串

13.Trim( )去掉字符串中前后的空格

14.TrimEnd( )去掉字符串后面的空格

15.TrimStart( )去掉字符串前面的空格

16.isnulloempty( )確定字符串是空的還是null

17.string.Join( )將數組按照指定的字符串連接并返回一個字符串


5、繼承

我們可能會在一些類中,寫一些重復的成員,我們可以將這些重復的成員,單獨的封裝到一個類中,作為這些類的父類。

Student、Teacher、Driver?子類?派生類

Person????????????????父類?基類

子類繼承了父類,子類從父類那里繼承過來了什么?

首先,子類繼承了父類的屬性和方法,但是子類并沒有繼承父類的私有字段。

問題:子類有沒有繼承父類的構造函數?

答:子類沒有繼承父類的構造函數,但是,子類會默認的調用父類的無參數的構造函數,創(chuàng)建父類對象,讓子類可以使用父類中的成員。

所以,如果在父類中重寫了一個有參數的構造函數之后,那個無參數的就被干掉了,子類就調用不到了,所以子類會報錯。

解決辦法:

1.在父類中重新寫一個無參數的構造函數。

2.在子類中顯示的調用父類的構造函數,使用關鍵字:base( )


6、繼承的特性

1.繼承的單根性:一個子類只能有一個父類。

2.繼承的傳遞性


7、查看類圖


8、object是所有類的基類。


9、new關鍵字

1.創(chuàng)建對象

2.隱藏從父類那里繼承過來的同名成員

隱藏的后果就是子類調用不到父類的成員


三、


1、里氏轉換

1)子類可以賦值給父類:如果有一個地方需要一個父類作為參數,我們可以給一個子類代替

2)如果父類中裝的是子類對象,那么可以將這個父類強轉為子類對象,


2、

子類對象可以調用父類中的成員,但是父類對象永遠都只能調用自己的成員。


3、

is:表示類型轉換,如果能夠轉換成功,則返回一個true,否則返回一個false

as:表示類型轉換,如果能夠轉換則返回對應的對象,否則返回一個null


4、protected修飾符

protected:受保護的,可以在當前類的內部以及該類的子類中訪問


5、ArrayList集合

1)集合與數組的區(qū)別

集合:很多數據的一個集合

數組:長度不可變、類型單一

集合的好處:長度可以任意改變,類型任意


2)ToString的問題

我們將一個對象輸出到控制臺 默認情況下 打印的就是這個對象所在的類的命名空間


3)ArrayList的方法

list.Clear();//清空所有元素

list.Remove(true);//刪除單個元素,寫誰就刪誰

list.RemoveAt(0);//根據下標刪除元素

list.RemoveRange(0, 3);//根據下標去移除一定范圍的元素

list.Sort();//升序排列

list.Reverse();//反轉

list.Insert(0,'我');//插入單個元素

list.InsertRange(5, new string[] {"張三","李四"});//在指定的位置插入一個集合


4)長度的問題

每次集合中實際包含的元素個數(count)超過了可以包含的元素個數(capcity)的時候,集合就會向內存中多開辟一倍的內存空間,來保證集合的長度一直夠用。


6、Hashtable鍵值對集合

?
125.Hashtable集合 P125 - 00:14
?

在鍵值對集合中,是根據鍵去找值的

例如通過字典找字 sun --> 孫,拼音是“鍵”,找出來的字是“值”

鍵值對對象[鍵]=值;

注意***:鍵值對集合當中,鍵必須是唯一的,而值是可以重復的


7、var推斷類型

?
125.Hashtable集合 P125 - 12:10
?

var:能夠根據值推斷出來類型


C#是一門強類型語言:在代碼當中,必須對每一個變量的類型有一個明確的定義

//int n = 15;


js是一門弱類型語言:會根據值對類型做出判斷(ps:B站就是因為使用了弱類型語言導致了一次崩潰。具體詳見:BV18U4y1B7nA

//12 3.14 true "fdfds" 'c' 都能用var


8、foreach循環(huán)

語法:

foreach (var item in collection) {

}

//item表示集合中元素的標識符,collection表示集合


9、Path類

?
127.Path類 P127 - 03:28
?

常用的Path.方法:

//獲得文件名

Path.GetFileName(str);

//獲得文件名但是不包含拓展名

Path.GetFileNameWithoutExtension();

//獲得文件的拓展名

Path.GetExtension();

//獲得文件所在的文件夾的名稱

Path.GetDirectoryName();

//獲得文件的全路徑

Path.GetFullPath();

//連接兩個字符串作為路徑

Path.Combine(@"c:\a\" , "b.txt");


10、File類

//創(chuàng)建一個文件

//File.Create(@"盤符:\路徑\文件名.拓展名");


//刪除一個文件

//File.Delete();


//復制一個文件

File.Copy(@“盤符:\路徑\要復制的文件名.拓展名” , @"盤符:\路徑\復制后的文件名.拓展名")

c#入門到高級(全)的評論 (共 條)

分享到微博請遵守國家法律
仙游县| 教育| 柳江县| 浦北县| 合肥市| 九台市| 神池县| 津南区| 巴林左旗| 张家港市| 民权县| 巫溪县| 内乡县| 鹤壁市| 南安市| 海丰县| 绥宁县| 安阳市| 定安县| 蓝山县| 渑池县| 突泉县| 麻阳| 固始县| 九江县| 青州市| 长垣县| 常州市| 柏乡县| 社旗县| 武陟县| 左权县| 宁津县| 平遥县| 彩票| 宁德市| 长治县| 寿宁县| 乌兰浩特市| 南平市| 巨鹿县|