1、委托是一个类型,事件是委托类型的一个特殊实例
类型和实例不具可比性
委托和事件的区别:
1、本质
2、委托内部
3、事件内部
4、安全使用
发布订阅模式 接口集合版、事件委托版
扩展方法三要素:静态类、静态方法、this关键字 本质是静态方法
public static class Demo
{
public static void MyExt(this List<int> list)
{
}
}
进程、线程 一个进程可以有多个线程,一个线程只能属于一个进程
案例:双色球、跨线程访问控件
对象池技术:lock锁住对象、对代码段进行互斥
生产者、消费者
lock(obj)
{
}
死锁产生:相互等待对方释放资源
如何解决死锁问题:操作顺序
var allProcess = Process.GetProcesses();
for(var item in allProcess)
{
item.kill();
}
---------------------------------------
自动属性{get;set;}
隐式类型
对象初始化器与集合初始化器
匿名类
扩展方法
Lambda表达式
-------------------------------------------
自动属性(auto-implemented Properties)
C#自动属性可以避免原来这样我们手工声明一个私有成员变量
以及编写get/set逻辑
//Demo
public class User{
public int Id(get;set;)
public string Name(get;set;)
public int Age{get;set;}
}
--------------------------------------------
将一组只读属性封装到单个对象中,而无须首先显式定义一个类型。
类型名由编译器生成,并且不能在源代码中使用。每个属性的类型
由编译器推断。[var]
用来初始化属性的表达式不能为null、匿名函数或指针类型。
var v=new{Amount=108,Message="Hello"}
-----------------------------------------------
对象初始化器与集合初始化器
List<Person>people=new List<Person>{
new Person{FirstName="Scott",LastName="Guthrie",Age=32},
new Person{FirstName="Bill",LastName="Gates",test02=85},
new Person{FirstName="Susanne",Age=32},
null,
};
Person person=new Person(){FirstName="Scott",LastName="Guthrie",test02=56};
Person person=new Person{FirstName="Scott",LastName="Guthrie",test02=56};
----------------------------------------------------
Lambda表达式
"Lambda表达式"是一个匿名函数,它可以包含表达式和语句,可用于创建委托。
运算符=>,该运算符读为"goes to"
格式:(input parameters)=>expression
从匿名函数例子讲起
delegate bool DelDemo(int a,int b);
DelDemo fun=delegate(int a,int b){return a>b;};
Console.WriteLine(fun(1,3));
DelDemo funlambda=(int a,int b)=>a>b;
Console.WriteLine(funlambda(1,3));
----------------------------------------------------------
实体框架(Entity Framework)简介
简称EF
与asp.net mvc关于ado.net关系
ado.net Entity Framework是微软以ado.net为基础所发展出来的对象关系对应(O/R Mapping)
解决方案,早期被称为ObjectSpace,最新版本是EF6.0[CodeOnly功能得到了更好的支持]
实体框架Entity Framework是ado.net中的一组支持开发面向数据的软件应用程序的技术。
是微软的一个ORM框架
linq to sql(轻型,晓得ORM)NHibernate(ORM)
------------------------------------------------
什么是O/R Mapping
广义上,OPM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换
狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的
数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要了解
任何关系型数据库存储数据的实现细节。
O-M-R
---------------------------------------
数据库访问层
UserInfoDal 就是对UserInfo表的crud封装
弱类型的 Datatable.getInt("Id")/SqlDataReader.Read()
ORM框架
弱类型
数据库访问层
数据库访问驱动层 ado.net
数据库
--------------------------------------------
ORM:思想,表实体和表的相互转化
实际上:1)把表实体的变化转化到数据库里面去。2)把表数据转成表实体
---------------------------------------------------------------------
安装EntityFramework:
一、
二、
三、
四、
五、
六、
七、
八、
九、
十、
十一、
十二、
十三、
十四、
十五、
十六、
十七、