C#面试题
C#:
1.C# 中的三元运算符是_____?
2.当整数a赋值给一个object对象时,整数a将会被_____?
3.public static const int A=1;这段代码有错误么?是什么?
4.float f=-123.567F;
int i=(int)f;
i的值现在是_____?
5.利用operator声明且仅声明了==,有什么错误么?
6.委托声明的关键字是______?
7.用sealed修饰的类有什么特点?
8.在ASP.NET中所有的自定义用户控件都必须继承自________?
9.在.NET中所有可序列化的类都被标记为_____?
10.在.NET托管代码中我们不用担心内存漏洞,这是因为有了______?
11.下面的代码中有什么错误吗?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}
12.当类T只声明了私有实例构造函数时,则在T的程序文本外部,______(可以 or 不可以)从T
派生出新的类,____(可以 or 不可以)直接创建T的任何实例。
13.下面这段代码有错误么?
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
default;
CaseTwo();
break;
}
14.在.NET中,类System.Web.UI.Page 可以被继承么?
15. C#中,能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。
填空题答案:
1 ?:
2 装箱
3 const成员都是static所以应该去掉static
4 -123
5重载了"==" 就必须重载 "!="
6 delegate
7 不可被继承
8 System.Web.UI.UserControl
9 [serializable]
10 GC(Garbage Collection 垃圾回收器)
11 abstract override 是不可以一起修饰
12 不可以,不可以
13 case():――错!
14 可以
15 IEnumerable 、 GetEnumerator ――拼写接近的也算答对吧
一、
简述 private、 protected、 public、 internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
二、
什么是托管代码?什么是强类型?什么是装箱和拆箱?
托管代码
使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。
强类型
每个变量和对象都必须具有声明类型。
装箱和拆箱
装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。
三、
CTS、CLS和CLR分别作何解释?
CTS 通用类型系统 (common type system)
一种确定公共语言运行库如何定义、使用和管理类型的规范。
CLR(Common Language Runtime)公共语言运行库
.NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。
CLS(Common Language Specification)公共语言规范
要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。
四、
Override、覆盖、重载分别是什么?
Override用来重写父类的方法。
重载:每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称为重载。
重载与覆盖的区别
1. 方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2. 覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3. 覆盖要求参数列表相同;重载要求参数列表不同。
4. 覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
五、
.NET的错误处理机制是什么
.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
六、
C#中接口和类的异同
接口和类都是类,不同的是,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。
1.C# 中的三元运算符是_____?
2.当整数a赋值给一个object对象时,整数a将会被_____?
3.public static const int A=1;这段代码有错误么?是什么?
4.float f=-123.567F;
int i=(int)f;
i的值现在是_____?
5.利用operator声明且仅声明了==,有什么错误么?
6.委托声明的关键字是______?
7.用sealed修饰的类有什么特点?
8.在ASP.NET中所有的自定义用户控件都必须继承自________?
9.在.NET中所有可序列化的类都被标记为_____?
10.在.NET托管代码中我们不用担心内存漏洞,这是因为有了______?
11.下面的代码中有什么错误吗?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}
12.当类T只声明了私有实例构造函数时,则在T的程序文本外部,______(可以 or 不可以)从T
派生出新的类,____(可以 or 不可以)直接创建T的任何实例。
13.下面这段代码有错误么?
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
default;
CaseTwo();
break;
}
14.在.NET中,类System.Web.UI.Page 可以被继承么?
15. C#中,能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。
填空题答案:
1 ?:
2 装箱
3 const成员都是static所以应该去掉static
4 -123
5重载了"==" 就必须重载 "!="
6 delegate
7 不可被继承
8 System.Web.UI.UserControl
9 [serializable]
10 GC(Garbage Collection 垃圾回收器)
11 abstract override 是不可以一起修饰
12 不可以,不可以
13 case():――错!
14 可以
15 IEnumerable 、 GetEnumerator ――拼写接近的也算答对吧
一、
简述 private、 protected、 public、 internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
二、
什么是托管代码?什么是强类型?什么是装箱和拆箱?
托管代码
使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。
强类型
每个变量和对象都必须具有声明类型。
装箱和拆箱
装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。
三、
CTS、CLS和CLR分别作何解释?
CTS 通用类型系统 (common type system)
一种确定公共语言运行库如何定义、使用和管理类型的规范。
CLR(Common Language Runtime)公共语言运行库
.NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。
CLS(Common Language Specification)公共语言规范
要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。
四、
Override、覆盖、重载分别是什么?
Override用来重写父类的方法。
重载:每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称为重载。
重载与覆盖的区别
1. 方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2. 覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3. 覆盖要求参数列表相同;重载要求参数列表不同。
4. 覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
五、
.NET的错误处理机制是什么
.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
六、
C#中接口和类的异同
接口和类都是类,不同的是,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。