您现在的位置是:首页 >学无止境 >【本站最全系列】(c#系统化学习宝典)—精华图文提炼核心网站首页学无止境
【本站最全系列】(c#系统化学习宝典)—精华图文提炼核心
??个人主页:@元宇宙-秩沅
?? hallo 欢迎 点赞? 收藏⭐ 留言? 加关注✅!
?? 本文由 秩沅 原创
?? 收录于专栏:unity之c#专题篇
⭐?️Unity之c#专题篇——【进阶章】⭐
⭐?️系统路线点击跳转⭐
⭐[【Unityc#专题篇】之c#进阶篇】
?前言
?️ 进阶之路
?(A) 数组的基类—Array类
集合 和 数组 的 区别 : 数组 的长度是固定的。 集合 的长度是可变的。 数组 中存储的是同一类型的元素,可以存储基本数据类型值。 集合 存储的都是对象。 而且对象的类型可以不一致。
- 1.概念
Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。Array 类提供了各种用于数组的属性和方法,可看作扩充了功能的数组(但不等同数组),可以使用Array类的属性来对数组进行各种操作。
-
2.方法
-
3.属性:
-
4.Array.Reverse()-需要反转字符串时
String B ="12345";
char [] A = B.TocharArray();
Array.Reverse(A);
String B = new string(A);
?(B)简单数据集合——容器ArrayList
-
思维导图
-
API
初始化容量: ArrayList xx = new ArrayList(number);
补充: arraryList 是可以通过下标来获取对象的
?(C)简单数据集合——容器Stack
?(D)简单数据集合——容器Queue类
- 所以什么时候用到栈和队列呢?
首先在满足 先进后出或者 先进先出的存取规则之后
也考虑到 只 存取 对象的 不需要修改和删除对象的操作 - 这个时候栈和队列才适合
?(E)简单数据集合——容器Hashtable类(散列表)
?(F)简单数据集合小结
- 都在相同的命名空间:using System.Collections;
- 本质上都是Object的数组,存在拆箱装箱的缺点
?(G)泛型
- 三大类
- 好处:
1.能够使得不同对象执行同一逻辑操作——(也是什么时候用泛型的前提)
2.若是泛型方法,直接用泛型当作参数传递了,()里面就不用写了
3.避免了装箱拆箱的操作
?(H)泛型约束
泛型约束应用:
- 单例模式的优缺点
1优点: 只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象适合需要被公用的场合使用,如多个模块使用同一个数据源连接对象等等
2缺点: 就是不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态
用单例模式,就是在适用其优点的状态下使用
?(II)常用泛型数据结构类——List泛型类
?(L)常用泛型数据结构类——Dictionary泛型类
- hashtable的遍历 和 Dictionary 遍历API的区别对比
+
?(J)数据结构存储方式——顺序存储和链式存储
?(K)常用泛型数据结构类——LinkedList泛型类
?(L)常用泛型数据结构类——泛型栈和队列
- 本质API和Stack类Queue类一样,加上了泛型
- 并且前者再system.collection命名空间里
- 后者在system.collection,Generic里
?(M)常用数据容器的不同应用情况
总结数组,list,Dectionary,Stack,Queue,LinkedList等存储容器。我们怎么来使用
-
数组:简单的数据类型存储的时候,或者只需要查改数据的时候
-
List:它是ArraryList的泛型升级,适合一切对象的存储,适合查改的情况下使用
-
LinkeList:它是泛型双向链表,适合频繁增删的数据对象的情况下使用
-
Dectionary:它是Hashtable的泛型升级,适合键值对象的存储
-
Stack:适合先进后出的情况下使用
-
Queue:适合先进先出的情况下使用
?(N)委托和事件——委托
- 相当于老板把活儿都安排好了,分给谁做,谁做多个,谁做少的
- 某个对象要执行别人安排的一系列方法的时候可以选择用委托
?(O)委托和事件——事件
-
public Action WarmDoEvent1; //无返回值无参 public Action<int ,int> WarmDoEvent2; //无返回值有两个int的参数 public Func<int> WarmDoEvent3; //有int类型的返回值,无参 public Func<string, int> WarmDoEvent4; //有int类型的返回值,有一个string的参数 ------------------------------------------------------------------ +
委托和事件的原则:
1.委托什么类型有参有无返回值,它传入的函数和它是一致的
2.了解系统自带四个委托类型的实质是什么
3.变成事件的委托,无法在自身对象外面被置空(赋值)或被调用,但是+= 和 -+ 可以
4.而没有变事件的委托就不安全了 ,它就可以在外面被调用,有置空的风险
5.所以事件存在,让委托更安全了
6.用委托的时候能用事件就更好
?(P)委托和事件——匿名函数
- 相当于delegate是函数名 ,()是放参数列表的 ,{代码逻辑} 是方法体
?(Q)委托和事件——Lambda表达式
![
](https://img-blog.csdnimg.cn/6f2d17f530854c7a85f0521529246276.png)
- 闭包的条件
- 闭包的特点
- 父类函数最终值情况的消灭
?(R)委托和事件——补充(返回委托数组)
- 因为我们使用委托添加有返回值的函数时,当调用委托后,它并不会获取到每一个有返回值函数的返回值,它只是执行所有存在委托中的函数
如果想要获取到每一个函数执行后的返回值
-
知识点:委托容器中存在方法 GetInvocationList() 可以返回一个委托数组
-
当有返回值的容器存储多个函数时,想要一一得到其返回值的情况
class Program
{
//当有返回值的容器存储多个函数时,想要一一得到其返回值的情况
static public Func<int > Print()
{
Func<int> action = null;
for (int i = 1; i <= 10; i++)
{
int index = i;
action += () => {
Console.WriteLine("第{0}个函数",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排序相关
?(T)协变和逆变
?(U)多线程
?(V)预处理指令
?(W)反射
——(前面用不到,只是用来理解unity)
- 编译器的作用
- 源语言程序员
- 目标语言程序
- 一.Type类
- 二.Assembly类
- 三.Activator类
?(X)特性
常见的特性如下:
- 限制加持范围的特性
- 标记过时提示的特性
- 提示调用者信息的特性
-
预处理条件编译的特性
-
外部调用DLL包的特性
-
特性的本质:
-
特性的语法
-
特性的使用
?(Y)迭代器
?(Y)特殊语法总结
⭐相关文章⭐
⭐本站最全-unity常用API大全(万字详解),不信你不收藏
你们的点赞? 收藏⭐ 留言? 关注✅是我持续创作,输出优质内容的最大动力!