技术开发 频道

C#中C/C++程序员不可不知的问题

  17、在C#中,对象都是使用new保留字建立的,建立对象时分两个步骤:

  一、向系统要求内存。

  二、调用构造器进行初始化。

  18、C#中多态性,虚拟方法用来指明扩展类可以改写基础类方法的实现部分。多态性用override、new来实现,在C++中用virtual来实现。

  Override方法则是应用在扩展类当中,可使用override保留字指明欲改写基础类的virtual成员之实现部分。换言之,virtual方法是在基础类中定义的,而override是在扩展类中定义的。

  方法声明前加上了virtual 修饰符,我们称之为虚方法,反之为非虚。使用了virtual 修饰符后,不允许再有static, abstract, 或override 修饰符。

  19、接口(Interface)和类(Class)非常相似,唯一的不同点在于接口中不包含任何实现程序代码。注意:定义在接口中的方法隐含都是属于public,因此不能够在方法之前加public修饰符。

class B

  {
public virtual void foo () {} }

  class D : B

  {

  
public override void foo () {}

  }

  class N : D

  {

  
public new void foo () {}

  
public static void Main() {

  N n
= new N ();

  n.foo( ) ;
// 调用N的foo

  ((D)n).foo( ) ;
// 调用D的foo

  ((B)n).foo( ) ;
// 调用D的foo

  }

  }

  20、attribute属性

  Attribute不过是一个声明式的标记,能在执行时期将一些信息,如类、数据结构、enum以及assembly等信息,传送给.NET执行时期引擎,以动态个更改对象执行时期的行为。不妨将attribute想象成一个可供程序保存、然后使用的注释。

  21、反射

  反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。

  反射在下列情况下很有用:

  当需要访问程序元数据中的属性时。请参见主题使用反射访问属性。

  检查和实例化程序集中的类型。

  在运行时构建新类型。使用 System.Reflection.Emit 中的类。

  执行后期绑定,访问在运行时创建的类型的方法。请参见主题动态加载和使用类型。

0
相关文章