随笔分类 -  C#

摘要:一、泛型(Generic) 为什么要引入泛型 避免成员膨胀 避免类型膨胀 而且泛型具有正交性,它能兼具的类型有类与接口等 来看看什么是类型膨胀,在方法一种出现的就是类型膨胀(若以后增加服务,又得增加类,那就会产生无穷无尽的类) 类型膨胀 class Test { static void Main(s 阅读全文
posted @ 2022-02-08 15:43 Ariaaaaa 阅读(6) 评论(0) 推荐(0)
摘要:一、一个接口对多个接口的继承 为了满足接口隔离原则,也为了以后好维护,将臃肿的接口拆分 点击查看代码 class Test { static void Main(string[] arg) { var driver=new Driver(new STank()); driver.UseDo(); } 阅读全文
posted @ 2022-02-07 17:12 Ariaaaaa 阅读(6) 评论(0) 推荐(0)
摘要:一、简单的接口实现,解决紧耦合现象 点击查看代码 class Test { static void Main(string[] arg) { var user=new User(new SangSun()); user.UsePhone(); } } class User { private Iph 阅读全文
posted @ 2022-02-07 13:37 Ariaaaaa 阅读(6) 评论(0) 推荐(0)
摘要:一、抽象类 抽象类与接口是有很大区别的。 首先抽象类里至少有一个不完全实现的方法、属性、事件。 而接口是一个全部都完全未实现的方法、属性、事件。 抽象类的属性 如果一个类里面有一个抽象(abstract)的方法,则这个类也要加abstract,这就诞生了一个抽象类。 如果有继承关系,那么父类有抽象类 阅读全文
posted @ 2022-02-06 23:37 Ariaaaaa 阅读(6) 评论(0) 推荐(0)
摘要:一、类 是一种数据结构——抽象类的数据结构(抽象出来的整体,如学生) 是一种数据类型——引用类型 代表现实世界中的”种类“ 实例构造器,在实例化一个对象时候才会调用。 静态构造器,在加载类时就调用了 实例解析器,GC时会调用此解析器(~加类名()) 基类 -> 派生类 父类 -> 子类 点击查看代码 阅读全文
posted @ 2022-02-06 19:49 Ariaaaaa 阅读(10) 评论(0) 推荐(0)
摘要:一、完整自定义事件 完整自定义事件就会用到自定义的委托 事件就是用来保护委托的 用delegate声明委托时,一般采用事件名字+EventHandle后加(事件拥有者,事件数据) 而事件数据(事件名+EventArgs),在事件数据类中,最好继承EventArgs 而我们的核心,第一就是要搞懂,事件 阅读全文
posted @ 2022-02-05 23:16 Ariaaaaa 阅读(4) 评论(0) 推荐(0)
摘要:事件 事件模型由五大部分组成: 1、事件拥有者(Event Source 对象)object sender 2、事件成员(Event 成员) 3、事件的响应者(Event Subcriber 对象) 4、事件处理器(Event Handler 成员)本质是个回调函数 5、事件订阅——把事件处理器与事 阅读全文
posted @ 2022-02-05 20:31 Ariaaaaa 阅读(7) 评论(0) 推荐(0)
摘要:委托 委托(delegate)是函数指针的升级版 算法(方法)是内存中一组机器语言指令 是特殊的类类型 自定义委托(delegate) 点击查看代码 delegate double Cal(double x,double y); class Program { static void Main(st 阅读全文
posted @ 2022-02-04 22:14 Ariaaaaa 阅读(10) 评论(0) 推荐(0)
摘要:一、传值参数(默认参数) 在传参时,就创建副本了 二、ref引用参数 形参变,实参也变,一起变 参数类型前加ref,且在引入前必须对变量初始化。 三、out输出参数 实参无需初始化 调用TryParse,返回bool类型值,与out的值 static void Main(string[] args) 阅读全文
posted @ 2022-02-04 16:35 Ariaaaaa 阅读(6) 评论(0) 推荐(0)
摘要:一、<<左位移与>>右位移 二进制左移与右移 左移补0 右移正补0,负补1 一般无溢出,乘2 二、is与as操作符 is操作符返回bool类型的值 is操作符 class Program { static void Main(string[] args) { Object x=new Student 阅读全文
posted @ 2022-02-03 16:06 Ariaaaaa 阅读(4) 评论(0) 推荐(0)
摘要:一、实例构造器(instance constructor) Yuan yuan=new Yuan(); 就是实例一个对象时候所做的操作 构造器是一个没有返回值,连void都没有的方法 点击查看代码 public Yuan() { } 但他可以带入参数 Yuan yuan=new Yuan(2); 点 阅读全文
posted @ 2022-02-01 22:13 Ariaaaaa 阅读(5) 评论(0) 推荐(0)
摘要:一、程序不包含适合于入口点的静态 "Main" 方法 主函数必须是大写开头Main,而不是小写开头main static void Main(string[] args) 二、可访问性不一致: 参数类型“Customer”的可访问性低于委托 如果你是想声明一个委托来约束事件,则把委托里面的参数类都设 阅读全文
posted @ 2022-02-01 20:04 Ariaaaaa 阅读(7) 评论(0) 推荐(0)
摘要:一、命名空间(namespace)与类(class) 命名空间就像书架,类就像有名字的书本,书本也有可能存在相同的名称,但在不同书架中,则互不干扰,否则是在同一书架的重载。 二、动态链接库(dll) 有黑盒与白盒之分 dll引用黑盒(无源代码,无法自己修改):通过作者提供,或者在解决方案中的NuGe 阅读全文
posted @ 2022-01-30 22:25 Ariaaaaa 阅读(8) 评论(0) 推荐(0)
摘要:一、对象引用对于非静态的字段、方法或属性 static成员“类的成员”,实例是“对象的成员”。 static都是在类初始化的时候加载的,而非静态的变量都是在对象初始化的时候加载。 解决方法: 在类方法加static,如 点击查看代码 public class Tools { public doubl 阅读全文
posted @ 2022-01-30 22:09 Ariaaaaa 阅读(5) 评论(0) 推荐(0)