C#知识点十三

C#反射(Reflection):
(1)反射(Reflection) 对象用于在运行时获取类型信息。该类位于 System.Reflection 命名空间中,可访问一个正在运行的程序的元数据(2)System.Reflection 命名空间包含了允许获取有关应用程序信息及向应用程序动态添加类型、值和对象的类(3)反射(Reflection)的用途:1、它允许在运行时查看属性(attribute)信息2、它允许审查集合中的各种类型,以及实例化这些类型3、它允许延迟绑定的方法和属性(property) 4、它允许在运行时创建新类型,然后使用这些类型执行一些任务
(2)查看元数据:System.Reflection 类的 MemberInfo 对象需要被初始化,用于发现与类相关的属性(attribute)。为了做到这点,可以定义目标类的一个对象;如下:
System.Reflection.MemberInfo info = typeof(MyClass);
C#属性(Property):
(1)属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作(2)属性(Property)不会确定存储位置。相反,它们具有可读写或计算它们值的 访问器(accessors)(3)例如:有一个名为 Student 的类,带有 age、name 和 code 的私有域。我们不能在类的范围以外直接访问这些域,但是我们可以拥有访问这些私有域的属性
(4)访问器(Accessors):属性(Property)的访问器(accessor)包含有助于获取(读取或计算)或设置(写入)属性的可执行语句。访问器(accessor)声明可包含一个 get 访问器、一个 set 访问器,或者同时包含二者(5)抽象属性(Abstract Properties)
抽象类可拥有抽象属性,这些属性应在派生类中被实现
C#索引器(Indexer):
·允许一个对象可以像数组一样被索引;当为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样;可以使用数组访问运算符([ ])来访问该类的实例
(1)一维索引器的语法:

(2)索引器(Indexer)的用途:
·索引器的行为的声明在某种程度上类似于属性(property)。就像属性(property),可使用 get 和 set 访问器来定义索引器。
但是,属性返回或设置一个特定的数据成员,而索引器返回或设置对象实例的一个特定值。换句话说,它把实例数据分为更小的部分,并索引每个部分,获取或设置每个部分。
·定义一个属性(property)包括提供属性名称。索引器定义的时候不带有名称,但带有 this 关键字,它指向对象实例
(3)重载索引器(Indexer)
·索引器(Indexer)可被重载。索引器声明的时候也可带有多个参数,且每个参数可以是不同的类型。没有必要让索引器必须是整型的。C# 允许索引器可以是其他类型
C#委托(Delegate):
·C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变
·委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类
(1)声明委托(Delegate)
委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法
(2)实例化委托(Delegate)
一旦声明了委托类型,委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。当创建委托时,传递到 new 语句的参数就像方法调用一样书写,但是不带有参数
(3)委托的多播(Multicasting of a Delegate)
·委托对象可使用 “+” 运算符进行合并。一个合并委托调用它所合并的两个委托。只有相同类型的委托可被合并。"-" 运算符可用于从合并的委托中移除组件委托
·使用委托的这个有用的特点,可以创建一个委托被调用时要调用的方法的调用列表。这被称为委托的 多播(multicasting),也叫组播
(4)委托(Delegate)的用途
·委托 printString 可用于引用带有一个字符串作为输入的方法,并不返回任何东西

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值