?????個(gè)人主頁:@元宇宙-秩沅
????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?!
????? 本文由 秩沅 原創(chuàng)
????? 收錄于專欄:unity之c#專題篇
????Unity之c#專題篇——【進(jìn)階章】?
????系統(tǒng)路線點(diǎn)擊跳轉(zhuǎn)?
?[【Unityc#專題篇】之c#進(jìn)階篇】
?【Unityc#專題篇】之c#核心篇】
?【Unityc#專題篇】之c#基礎(chǔ)篇】
?【Unity-c#專題篇】之c#入門篇】
?【Unityc#專題篇】—進(jìn)階章題單實(shí)踐練習(xí)
?【Unityc#專題篇】—基礎(chǔ)章題單實(shí)踐練習(xí)
?【Unityc#專題篇】—核心章題單實(shí)踐練習(xí)
??前言
??? 進(jìn)階之路
??(A) 數(shù)組的基類—Array類
集合 和 數(shù)組 的 區(qū)別 : 數(shù)組 的長度是固定的。 集合 的長度是可變的。 數(shù)組 中存儲(chǔ)的是同一類型的元素,可以存儲(chǔ)基本數(shù)據(jù)類型值。 集合 存儲(chǔ)的都是對(duì)象。 而且對(duì)象的類型可以不一致。
- 1.概念
Array 類是 C# 中所有數(shù)組的基類,它是在 System 命名空間中定義。Array 類提供了各種用于數(shù)組的屬性和方法,可看作擴(kuò)充了功能的數(shù)組(但不等同數(shù)組),可以使用Array類的屬性來對(duì)數(shù)組進(jìn)行各種操作。
-
2.方法
-
3.屬性:
-
4.Array.Reverse()-需要反轉(zhuǎn)字符串時(shí)
String B ="12345";
char [] A = B.TocharArray();
Array.Reverse(A);
String B = new string(A);
??(B)簡(jiǎn)單數(shù)據(jù)集合——容器ArrayList
-
ArrayList,Array,LinkedList優(yōu)缺點(diǎn)
-
思維導(dǎo)圖
-
API
初始化容量: ArrayList xx = new ArrayList(number);
補(bǔ)充: arraryList 是可以通過下標(biāo)來獲取對(duì)象的
??(C)簡(jiǎn)單數(shù)據(jù)集合——容器Stack
??(D)簡(jiǎn)單數(shù)據(jù)集合——容器Queue類
-
所以什么時(shí)候用到棧和隊(duì)列呢?
首先在滿足 先進(jìn)后出或者 先進(jìn)先出的存取規(guī)則之后
也考慮到 只 存取 對(duì)象的 不需要修改和刪除對(duì)象的操作 - 這個(gè)時(shí)候棧和隊(duì)列才適合
??(E)簡(jiǎn)單數(shù)據(jù)集合——容器Hashtable類(散列表)
??(F)簡(jiǎn)單數(shù)據(jù)集合小結(jié)
- 都在相同的命名空間:using System.Collections;
- 本質(zhì)上都是Object的數(shù)組,存在拆箱裝箱的缺點(diǎn)
??(G)泛型
- 三大類
-
好處:
1.能夠使得不同對(duì)象執(zhí)行同一邏輯操作——(也是什么時(shí)候用泛型的前提)
2.若是泛型方法,直接用泛型當(dāng)作參數(shù)傳遞了,()里面就不用寫了
3.避免了裝箱拆箱的操作
??(H)泛型約束
泛型約束應(yīng)用:
-
單例模式的優(yōu)缺點(diǎn)
1優(yōu)點(diǎn): 只允許創(chuàng)建一個(gè)對(duì)象,因此節(jié)省內(nèi)存,加快對(duì)象訪問速度,因此對(duì)象適合需要被公用的場(chǎng)合使用,如多個(gè)模塊使用同一個(gè)數(shù)據(jù)源連接對(duì)象等等
2缺點(diǎn): 就是不適用于變化的對(duì)象,如果同一類型的對(duì)象總是要在不同的用例場(chǎng)景發(fā)生變化,單例就會(huì)引起數(shù)據(jù)的錯(cuò)誤,不能保存彼此的狀態(tài)
用單例模式,就是在適用其優(yōu)點(diǎn)的狀態(tài)下使用
??(II)常用泛型數(shù)據(jù)結(jié)構(gòu)類——List泛型類
??(L)常用泛型數(shù)據(jù)結(jié)構(gòu)類——Dictionary泛型類
-
hashtable的遍歷 和 Dictionary 遍歷API的區(qū)別對(duì)比
+
??(J)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)方式——順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)
??(K)常用泛型數(shù)據(jù)結(jié)構(gòu)類——LinkedList泛型類
??(L)常用泛型數(shù)據(jù)結(jié)構(gòu)類——泛型棧和隊(duì)列
- 本質(zhì)API和Stack類Queue類一樣,加上了泛型
- 并且前者再system.collection命名空間里
- 后者在system.collection,Generic里
??(M)常用數(shù)據(jù)容器的不同應(yīng)用情況
總結(jié)數(shù)組,list,Dectionary,Stack,Queue,LinkedList等存儲(chǔ)容器。我們?cè)趺磥硎褂?/p>
-
數(shù)組:簡(jiǎn)單的數(shù)據(jù)類型存儲(chǔ)的時(shí)候,或者只需要查改數(shù)據(jù)的時(shí)候
-
List:它是ArraryList的泛型升級(jí),適合一切對(duì)象的存儲(chǔ),適合查改的情況下使用
-
LinkeList:它是泛型雙向鏈表,適合頻繁增刪的數(shù)據(jù)對(duì)象的情況下使用
-
Dectionary:它是Hashtable的泛型升級(jí),適合鍵值對(duì)象的存儲(chǔ)
-
Stack:適合先進(jìn)后出的情況下使用
-
Queue:適合先進(jìn)先出的情況下使用
??(N)委托和事件——委托
- 相當(dāng)于老板把活兒都安排好了,分給誰做,誰做多個(gè),誰做少的
- 某個(gè)對(duì)象要執(zhí)行別人安排的一系列方法的時(shí)候可以選擇用委托
??(O)委托和事件——事件
-
public Action WarmDoEvent1; //無返回值無參 public Action<int ,int> WarmDoEvent2; //無返回值有兩個(gè)int的參數(shù) public Func<int> WarmDoEvent3; //有int類型的返回值,無參 public Func<string, int> WarmDoEvent4; //有int類型的返回值,有一個(gè)string的參數(shù) ------------------------------------------------------------------ +
委托和事件的原則:
1.委托什么類型有參有無返回值,它傳入的函數(shù)和它是一致的
2.了解系統(tǒng)自帶四個(gè)委托類型的實(shí)質(zhì)是什么
3.變成事件的委托,無法在自身對(duì)象外面被置空(賦值)或被調(diào)用,但是+= 和 -+ 可以
4.而沒有變事件的委托就不安全了 ,它就可以在外面被調(diào)用,有置空的風(fēng)險(xiǎn)
5.所以事件存在,讓委托更安全了
6.用委托的時(shí)候能用事件就更好
??(P)委托和事件——匿名函數(shù)
- 相當(dāng)于delegate是函數(shù)名 ,()是放參數(shù)列表的 ,{代碼邏輯} 是方法體
??(Q)委托和事件——Lambda表達(dá)式
![
- 閉包的條件
- 閉包的特點(diǎn)
- 父類函數(shù)最終值情況的消滅
??(R)委托和事件——補(bǔ)充(返回委托數(shù)組)
- 因?yàn)槲覀兪褂梦刑砑佑蟹祷刂档暮瘮?shù)時(shí),當(dāng)調(diào)用委托后,它并不會(huì)獲取到每一個(gè)有返回值函數(shù)的返回值,它只是執(zhí)行所有存在委托中的函數(shù)
如果想要獲取到每一個(gè)函數(shù)執(zhí)行后的返回值
-
知識(shí)點(diǎn):委托容器中存在方法 GetInvocationList() 可以返回一個(gè)委托數(shù)組
-
當(dāng)有返回值的容器存儲(chǔ)多個(gè)函數(shù)時(shí),想要一一得到其返回值的情況
class Program
{
//當(dāng)有返回值的容器存儲(chǔ)多個(gè)函數(shù)時(shí),想要一一得到其返回值的情況
static public Func<int > Print()
{
Func<int> action = null;
for (int i = 1; i <= 10; i++)
{
int index = i;
action += () => {
Console.WriteLine("第{0}個(gè)函數(shù)",index);
return index*100 ;
};
}
return action;
}
static void Main(string[] args)
{
Func<int> text = Print();
text();
// Print()();//一步到位的寫法
foreach (Func<int> item in text.GetInvocationList() )
{
Console.WriteLine(item());
}
}
}
??(S)委托和事件——List排序相關(guān)
??(T)協(xié)變和逆變
??(U)多線程
??(V)預(yù)處理指令
??(W)反射
——(前面用不到,只是用來理解unity)
- 編譯器的作用
- 源語言程序員
- 目標(biāo)語言程序
-
一.Type類
- 二.Assembly類
-
三.Activator類
??(X)特性
常見的特性如下:
- 限制加持范圍的特性
- 標(biāo)記過時(shí)提示的特性
- 提示調(diào)用者信息的特性
-
預(yù)處理?xiàng)l件編譯的特性
-
外部調(diào)用DLL包的特性
-
特性的本質(zhì):
-
特性的語法
-
特性的使用
??(Y)迭代器
??(Y)特殊語法總結(jié)
?相關(guān)文章?
?【Unityc#專題篇】之c#進(jìn)階篇】
?【Unityc#專題篇】之c#核心篇】
?【Unityc#專題篇】之c#基礎(chǔ)篇】
?【Unity-c#專題篇】之c#入門篇】
?【Unityc#專題篇】—進(jìn)階章題單實(shí)踐練習(xí)
?【Unityc#專題篇】—基礎(chǔ)章題單實(shí)踐練習(xí)
?【Unityc#專題篇】—核心章題單實(shí)踐練習(xí)
?本站最全-unity常用API大全(萬字詳解),不信你不收藏文章來源:http://www.zghlxwxcb.cn/news/detail-472974.html
你們的點(diǎn)贊?? 收藏? 留言?? 關(guān)注?是我持續(xù)創(chuàng)作,輸出優(yōu)質(zhì)內(nèi)容的最大動(dòng)力!文章來源地址http://www.zghlxwxcb.cn/news/detail-472974.html
到了這里,關(guān)于【本站最全系列】(c#系統(tǒng)化學(xué)習(xí)寶典)—精華圖文提煉核心的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!