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新应用 ...
随机推荐
- java数组并集/交集/差集(补集)
1.说明 使用java容器类的性质选择容器 2.实现 package com.wish.datastrustudy; import java.util.HashSet; import java.uti ...
- 3Sum Closest——LeetCode
Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...
- 「Githug」Git 游戏通关流程
Githug 他喵的这是个啥!?难道不是 GitHub 拼错了么,和 Git 什么关系? 和游戏又有什么关系? 其实,他的元身在这里:https://github.com/Gazler/githug ...
- Java程序员的日常—— 垃圾回收中引用类型的作用
在Java里面,是不需要太过于关乎垃圾回收,但是这并不意味着开发者可以不了解垃圾回收的机制,况且在java中内存泄露也是家常便饭的事情.因此了解垃圾回收的相关知识就显得很重要了. 引用,在垃圾回收中是 ...
- Android学习之电话拨号器
本人自己是做android驱动的,也会接触到系统层.上层的应用,所以在闲暇的时候也就开始了学习android应用的路程,在这里把这些东西记下来,希望自己能坚持下去,也好以后复习用. 今天先实现一个简单 ...
- SKPhysicsWorld类
继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架 /System/Library/Frameworks/SpriteKit.framework 可用性 可用 ...
- 针对Yii框架的nginx配置
我曾经针对yii制作了 个nginx配置,其中包括了以下几项内容: rewrite规则(try_file),需要nginx0.8.6版本以上支持. 针对于icon, robots.txt文件的日志优化 ...
- Java基础知识强化95:Calendar类之Calendar类的add()和set()方法
1. Calendar的add()和set()方法: public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作 public ...
- yii cgridview 默认的筛选如何做成选择框
效果图 参照 http://www.yiiframework.com/doc/api/1.1/CGridColumn http://www.yiiframework.com/doc/api/1.1/C ...
- Ubuntu 修改时区和时间
tzselect #根据提示选择时区 sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #把设置好的时区文件粘贴到 /etc/local ...