一, C#
1. 请解释在 new 与 override 的区别?
在 C# 中,new 关键字可用作运算符或修饰符. new
new 运算符用于在堆上创建对象和调用构造函数. new 修饰符用于隐藏基类成员的继承成员.
使用 override 修饰符来修改方法,属性,索引器或事件.重写方法提供从基类 继承的成员的新实现.由重写声明重写的方法称为重写基方法.重写基方法必须 与重写方法具有相同的签名. 不能重写非虚方法或静态方法.重写基方法必须是虚拟的,抽象的或重写的. 重写声明不能更改虚方法的可访问性. 重写方法和虚方法必须具有相同的访问 级修饰符.不能使用下列修饰符修改重写方法: new static virtual abstract 重写属性声明必须指定与继承属性完 全相同的访问修饰符,类型和名称,并且重写属性必须是虚拟的,抽象的或重 写的.
2. 请解释 virtual 的含义?
virtual 关键字用于修改方法或属性的声明,在这种情况下,方法或属性 被称作虚拟成员.虚拟成员的实现可由派生类中的重写成员更改. 调用虚方法时,将为重写成员检查该对象的运行时类型.将调用大部分派生类中 的该重写成员, 如果没有派生类重写该成员, 则它可能是原始成员. 默认情况下, 方法是非虚拟的.不能重写非虚方法.不能将 virtual 修饰符与以下修饰符一 起使用:static abstract static override 除了声明和调用语法不同外,虚拟属 性的行为与抽象方法一样.
在静态属性上使用 virtual 修饰符是错误的. 通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性
3. 请解释.net 采用委托实现的事件模型与 JAVA 中采用接口实现的事件模型有什么区别, 以图示方式解释. 4. 请解释接口的显式实现有什么意义?
接口是其他类型为确保它们支持某些操作而实现的引用类型.接口从不直 接创建而且没有实际的表示形式,其他类型必须转换为接口类型.一个接口定义 一个协定.实现接口的类或结构必须遵守其协定.接口可以包含方法,属性,索 引器和事件作为成员.
5. 请以图示方式解释.net framework?
VB C++ C# JScript … Common Language Specification Visual Studio .NET Visual Studio .
NET XML Web services Web Forms Windows Forms
Data and XML Base Class Library CLR CLI
6.什么是.net?
.net 是一种平台和框架, .net 不是单纯的语言也不是单纯的工具,它是从底 层平台开始构建起来的一个整体框架
6. Ref 与 out 有什么不同?
方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变 量.当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变 量中.若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法.ref 参 ref 数的值被传递到 ref 参数. 传递到 ref 参数的参数必须最先初始化. 将
此方法 与 out 参数相比,后者的参数在传递到 out 参数之前不必显式初始化.属性不 是变量, 不能作为 ref 参数传递. 如果两种方法的声明仅在它们对 ref 的使用 方面不同,则将出现重载.但是,无法定义仅在 ref 和 out 方面不同的重载. 方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量. 当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量 中. 当希望方法返回多个值时, 声明 out 方法非常有用. 使用 out 参数的方法仍然 可以返回一个值.一个方法可以有一个以上的 out 参数.若要使用 out 参数, 必须将参数作为 out 参数显式传递到方法.out 参数的值不会传递到 out 参 out 数. 不必初始化作为 out 参数传递的变量. 然而, 必须在方法返回之前为 out 参 数赋值. 属性不是变量, 不能作为 out 参数传递. 如果两个方法的声明仅在 out 的使用方面不同,则会发生重载.不过,无法定义仅在 ref 和 out 方面不同的 重载.
7. 值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型.
大多数编程语言提供内置的数据类型(比如整数和浮点数),这些数据类型会在