事件委托反射程序集小总结
来源:互联网 发布:八宝茶的软件 编辑:程序博客网 时间:2024/05/01 08:44
操作xml文件 Dom
XmlDocument
Save()
Load()
SelectSingleNode("Order/OrderItem[@Name='diannao']") 根据xpath找某个节点
SelectNodes()
DocumentElement 根节点
XmlNode
XmlElement
SetAttribute(); 设置属性
Attributes[].Value 读取属性
InnerText
InnerXml
ChildNodes
委托:类型安全的指向函数的指针
使用步骤
1:声明一个委托 delegate string DelString(string s)2:定义一个委托变量
让委托指向一个方法
DelString del = new DelString(ToUpper)
DelString del = ToUpper
3:使用委托
del(s);
Sort(object[] arr,DelCompare del);
List<string> list;
list.Sort(Comparision<T> com)
list.RemoveAll();
匿名方法
DelString del = delegate(string s)
{
Console.WriteLine(s);
}
多播委托
DelMath del = Add;
del += Sub; del = del + Sub;
del += Mul;
del -= Mul;
事件
原理 定义一个事件的时候生成一个私有的委托
通过生成的add和remove方法对委托注册方法和移除方法
调用事件的时候最终调用的是委托指向的方法
使用步骤
1:定义事件
public event EventHandler PlayOver;
2:调用事件
if (PlayOver != null)
{
PlayOver(this, null);
}
3:外部注册事件
Player1 p = new Player1("真的恨你");
p.PlayOver += new PlayOverEventHandler(p_PlayOver);
p.Play();
EventHandler 事件委托
EventArgs 事件源参数
了解
c#代码 编译 MSIL(中间语言)
MSIL --- 编译(JIT) cpu可执行的代码
程序集
反射
Assembly 程序集
GetExportedTypes()获得程序集中的公共类型
GetTypes() 获得程序集中的所有类型
GetType(name) 根据类的全名称字符串 获得程序集中的类型
LoadFile(path)动态从文件加载程序集
Type 数据类型的类型
获取Type
Type t = typeof(Person)
Person p = new Person();
Type t = p.GetType();
t.FullName 获取类型的全名称
t.IsAssignableFrom(t1)判断t1类型的对象是否可以赋给t的对象
typyof(IPlugin).IsAssignableFrom(typeof(ShutDown))
t.IsInstanceOfType(object o)判断o对象是否是t类型
t.IsSubclassOf(t1)判断t是否是t1的子类
t.GetProperties()获取t类型中的所有属性
t.GetMethods()获取t类型中的所有方法
PropertyInfo
MethodInfo
Invoke(object o,object[] param)动态调用方法
IsPublic
IsAbstract
//动态创建对象
XmlDocument
Save()
Load()
SelectSingleNode("Order/OrderItem[@Name='diannao']") 根据xpath找某个节点
SelectNodes()
DocumentElement 根节点
XmlNode
XmlElement
SetAttribute(); 设置属性
Attributes[].Value 读取属性
InnerText
InnerXml
ChildNodes
委托:类型安全的指向函数的指针
使用步骤
1:声明一个委托 delegate string DelString(string s)2:定义一个委托变量
让委托指向一个方法
DelString del = new DelString(ToUpper)
DelString del = ToUpper
3:使用委托
del(s);
Sort(object[] arr,DelCompare del);
List<string> list;
list.Sort(Comparision<T> com)
list.RemoveAll();
匿名方法
DelString del = delegate(string s)
{
Console.WriteLine(s);
}
多播委托
DelMath del = Add;
del += Sub; del = del + Sub;
del += Mul;
del -= Mul;
事件
原理 定义一个事件的时候生成一个私有的委托
通过生成的add和remove方法对委托注册方法和移除方法
调用事件的时候最终调用的是委托指向的方法
使用步骤
1:定义事件
public event EventHandler PlayOver;
2:调用事件
if (PlayOver != null)
{
PlayOver(this, null);
}
3:外部注册事件
Player1 p = new Player1("真的恨你");
p.PlayOver += new PlayOverEventHandler(p_PlayOver);
p.Play();
EventHandler 事件委托
EventArgs 事件源参数
了解
c#代码 编译 MSIL(中间语言)
MSIL --- 编译(JIT) cpu可执行的代码
程序集
反射
Assembly 程序集
GetExportedTypes()获得程序集中的公共类型
GetTypes() 获得程序集中的所有类型
GetType(name) 根据类的全名称字符串 获得程序集中的类型
LoadFile(path)动态从文件加载程序集
Type 数据类型的类型
获取Type
Type t = typeof(Person)
Person p = new Person();
Type t = p.GetType();
t.FullName 获取类型的全名称
t.IsAssignableFrom(t1)判断t1类型的对象是否可以赋给t的对象
typyof(IPlugin).IsAssignableFrom(typeof(ShutDown))
t.IsInstanceOfType(object o)判断o对象是否是t类型
t.IsSubclassOf(t1)判断t是否是t1的子类
t.GetProperties()获取t类型中的所有属性
t.GetMethods()获取t类型中的所有方法
PropertyInfo
MethodInfo
Invoke(object o,object[] param)动态调用方法
IsPublic
IsAbstract
//动态创建对象
object o = Activator.CreateInstance(typeof(Person));
lvar关键字
•var i = 5;//int
•var j = 23.56;//double
•var k = "C Sharp";//string
•var x;//错误
•var y = null;//错误
•var z = { 1, 2, 3 };//错误
lvar强类型.根据后面的值自动推断类型,编译时把推断的类型替换掉var
匿名类型
lvarp1 = new { Id = 1, Name = "YJingLee", Age = 22 };//属性也不需要申明
lvarp2 = new { Id = 2, Name = "XieQing", Age = 25 };
l数组
•var intArray = new[] { 2, 3, 5, 6 };
•var strArray = new[] { "Hello","World" };
•var objArray= new[] { new { Name = "YJingLee", Age = 22 }, new { Name ="XieQing", Age = 25 } };
•var a = intArray[0];
•var b = strArray[0];
•var c = objArray[1].Name;
对象与集合初始化器
l对象初始化器
•Student stu= new Student{ Id = 1, Name = "YJingLee", Age = 22 };
•更方便给对象赋值
l集合初始化器
•List<int> num = new List<int> { 0, 1, 2, 6, 7, 8, 9 };
•
•List< Student > stus= new List< Student >
•{ new Student{Id=1,Name="YJingLee",Age=22},
•new Student{Id=2,Name="XieQing",Age=25},
•};
扩展方法
在StringHelper类中编写QuotedStr方法,使用时恐怖。判断一个字符串是否是正确的Email地址:IsEmail.
总感觉不是很好,要是看起来字符串有一个IsEmail方法多好呀。将IsEmail放到一个单独的类中,类声明为static(静态类),方法是静态方法,并且在第一个string上增加this。哇,string类“增加”IsEmail方法了,这只是假象,本质上仍然是静态方法,只不过C#提供了这样一个便利给大家,扩展方法内部不能调用被扩展类的私有、protected的东西。
声明扩展方法的步骤:类必须是static,方法是static,第一个参数是被扩展的对象,前面标注this。使用扩展方法的时候必须保证扩展方法类已经在当前代码中using
0 0
- 事件委托反射程序集小总结
- 小程序事件总结
- 反射委托事件实现
- 委托,事件和反射
- StringBuilder,集合,泛型集合,目录操作,操作xml文件,委托,事件,程序集,反射
- 利用反射获得委托和事件以及创建委托实例和添加事件处理程序
- 小试委托、事件
- 事件委托小例子
- 委托、事件小例
- 事件委托小练习
- .net反射(委托+事件)
- 黑马程序员_学习日记43_609基础加强(多播委托、事件、程序集、反射)
- 委托与事件总结
- 委托与事件总结
- 委托的小总结
- c# 事件委托小例子
- C#基础入门之委托事件反射
- C#委托,事件,接口,反射和关键字
- rk3128 camera sensor的注册
- RK3188上运行Ubuntu系统
- 仿网易新闻客户端
- HTML基础知识总结
- android 框架,注解式获取控件,网络模块。
- 事件委托反射程序集小总结
- springMVC表单提交地址跳转引出的问题
- CALayer 自定义图层
- poj1659 Frogs' Neighborhood
- 黑马程序员——NSString的几种实用方法
- PHP+MySQL取出数据库内容,经正则表达式处理后更新至另一张表
- 红薯,看看代码分享预览
- EF创建Model层
- CF-goodby 2014-D