DotNET知识点总结五(笔记整合)
1、委托:通常指的是 多播委托
通常的说,委托就是一个存放方法指针的容器,是一个安全的函数指针,供程序员安全调用。委托的本质就是一个类,继承于MulticastDelegate——>Delegate,在Delegate类中有一个IntPtr类型的变量来指向该方法的指针。
通常当方法传递的参数为一个方法时,就用委托。
委托能够将方法作为参数传递,(多播委托)调用一个委托,执行N个方法
2、集合排序
1.Reverse()方法直接反转排序
2.冒泡排序
int temp = ;
for(int i = ; i < arr.length; i++)
{
for(int j = i+; j < arr.length; j++)
{
if(arr[i] < arr[j])
{
temp = arr[i] ;
arr[i] = arr[j];
arr[j] = temp;
}
}
}
3、匿名方法
并不是真的没有名字,它在CLR编译时会产生一个临时方法名。匿名方法产生后,方法指针会存放在委托变量中,供程序调用
4、多播委托
1.可以向委托上注册多个方法(+=)
2.也可以从委托上移除已注册的方法(-=)
3.如果委托上注册了多个有返回值的方法,那么调用之后委托返回的是最后一个方法的返回值
5、事件
事件的本质就是提供了一个Add和Remove方法的委托对象(编译后生成了一个私有的委托对象,同时又为该委托对象提供了一个add(+=)和一个remove(-=)方法)
事件的内部机制就是创建一个私有的委托对象,同时又为该委托对象提供了一个add(+=)和一个remove(-=)方法,让程序员只有 += 和 -= 的操作
6、委托和事件的区别
委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准event方式实现)事件的区别。
事件的内部是用委托实现的,因为对于事件来讲,外部只能“注册自己+= 注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割的List。事件只能add、remove自己,不能赋值。事件只能 += 、 -=,不能=
事件的简单使用:
delegate void MyDelegate(string name);
class Program
{
static event MyDelegate myEvent;
static void Main(string[] args)
{
myEvent += new MyDelegate(Program_myEvent);
Console.ReadKey();
}
static void Program_myEvent(string name)
{
throw new NotImplementedException();
}
}
7、三层架构
什么是三层架构?
通常意义上的三层架构就是将这个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)
三层架构的目的
为了”高内聚,低耦合“的思想,增强项目的可扩展性
具体三层:
表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候的所见所得。比如说我们打开电脑所看到的桌面。
业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据库层的操作,对数据业务逻辑进行处理
数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增删查改等
三层之间的关系:
是一种垂直的关系。三层结构是N层架构的一种,一般来说,层次之间是向下依赖的,下层代码未确定其接口(规则)前,上层代码是无法开发的,下层代码接口的变化将使上层的代码一起变化
三层架构的优缺点:
优点:分工明确,条理清晰,易于调试和维护,而且具有可扩展性
缺点:增加成本
DotNET知识点总结五(笔记整合)的更多相关文章
- Spring知识点总结(五)Spring整合JDBC
1. 回顾JDBC a. java操作关系型数据的API.导入相关数据库的驱动包后可以通过JDBC提供的接口来操作数据库. b. 实现JDBC的六个步骤 ...
- dotnet 读 WPF 源代码笔记 布局时 Arrange 如何影响元素渲染坐标
大家是否好奇,在 WPF 里面,对 UIElement 重写 OnRender 方法进行渲染的内容,是如何受到上层容器控件的布局而进行坐标偏移.如有两个放入到 StackPanel 的自定义 UIEl ...
- DotNET知识点总结四(笔记整合)
1.枚举:本质是类 如果为第一个枚举赋了一个int值,那么后面的枚举项依次递增 可以将枚举强转成他所代表的int值 C#的枚举项都是常量(可以用Reflector查看literal的IL源码) 因为枚 ...
- DotNET知识点总结三(笔记整合)
使用接口的注意事项: 接口中的成员不能加访问修饰符 接口中的成员不能有任何实现 实现接口的子类必须实现接口的全部成员 一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口 ...
- .NET知识点总结一(笔记整合)
1. .net framework原理简介,C#程序的两次编译 .NET源代码——>语言编译器(第一次编译)——>MSIL+元数据(exe文件)——>CLR(公共语言运行时——类 ...
- .NET知识点总结二(笔记整合)
19.什么是类型? 用来定义某一种数据在内存里开辟空间的大小,还可以预置操作此种类型数据的相关方法 20.this关键字在方法中使用时所代表的含义 this指的是当前类的对象,或者父类的类的对象(ba ...
- Java 面试知识点解析(五)——网络协议篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- 团队作业(五)-笔记app top5
在互联网快速发展的情况下,各个行业的软件层出不穷,五花八门.各个行业都有相当多的软件介入其中,在如此多的软件之中,便有了相当激烈的竞争角逐.今天我们十五万的总冠军就着笔记APP行业中位列top 5的软 ...
- 小小知识点(五十一)——6G扬帆起航:拍赫兹通信与健康泛在网络助推6G新应用
转自IEEE科技纵览 https://weibo.com/ttarticle/p/show?id=2309404454066502631625 6G扬帆起航:拍赫兹通信与健康泛在网络助推6G新应用 ...
随机推荐
- Session之考勤
昨天初步的调侃了一下cookie,希望看官能够有更轻松愉快的学习和进一步的思考应用. 小编今天突然听到人事怨声载道,原来已多日未进行打卡考勤,虽是弹性工作,也颇有不好意思,决定明日改过,进门刷卡.灵机 ...
- 蓝牙4.0 BLE 开发
在BLE开发中的一些随记,供大家参考: 凡事皆有状态 低功耗蓝牙背后有个基本的概念:任何事务都有状态.状态可以是任何东西:当前的温度,设备里电池的状态,设备名称或者对测量温度的地点的描述.它通过属性服 ...
- mongodb清洗数据
1,数据库连接超时:DBPool的连接时的配置: 自己进行设置: MongoClientOptions mco = new MongoClientOptions.Builder() ...
- 下载gtest
gtest的官网地址:https://github.com/google/googletest 方式一:下载打包好的版本 在github的页面上可以直接下载打包好的gtest,下载入口如下图所示: 方 ...
- Java学习日记-5 关键字static和final 以及接口
乱入:表达式中的自动类型转换 char,short,byte都升级为int类型进行运算,结果为int,但其原变量类型并不改变. 所以,byte b = 10; b = b*b; 编译时会报错.但是写 ...
- cannot be resolved to a type in same package 问题解决
在 STS 上,一个类引用在相同 package 中另一个类,但是报 cannot be resolved to a type 错误. 解决方法 : Alternatively, you can hi ...
- Data Guard 之 浅析Switchover与Failover
Data Guard主从库之间的角色切换分为以下两种:1)SwitchoverSwithchover通常都是人为的有计划的进行角色互换,比如升级等.它通常都是无损的,即不会有数据丢失.其执行主要分为两 ...
- php几个不起眼儿的小技巧
说是不起眼儿的小技巧,其实应该说是不常用的常规应用吧.很多事情就是这样,知道是一马事儿,会用是一马事儿,精习又是另外一马事儿.而成为高手更是需要扎实的基本功. str_repeat 重复输出字符串就靠 ...
- Oralce新建数据库、新建远程登录用户全过程
Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 对于初学者来说,为了避免麻烦,可以用'Database Configuration Assi ...
- Django学习笔记(五)—— 表单
疯狂的暑假学习之 Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path ...