中编译时多态主要是通过__________实现的。
48、C#程序设计中的错误主要分为两类:__________和运行错误。
49、在VS 2005中,单步跟踪是指用跟踪来一次一条语句地执行代码,那么在调试过程中,单步跟踪的键盘快捷键是__________。 50、CLR全称是__________。
三、判断题
1、在C#中,抽象类里面的方法一定不能含有实现。() 2、运行.NET程序,不需要安装.NET Framework。() 3、C#中委托只包含单点委托。() 4、C#中已经不包含指针。()
5、在C#中,类的静态成员方法不能对非静态的数据成员进行操作。() 6、在C#中,不允许使用未初始化的变量。() 7、C#中标识符严格区分大小写。()
8、在C#中,类和结构体都属于引用类型。()
9、在C#中,static const int i = 1;该行代码能编译通过。() 10、在C#中,Array类是所有数组类型的抽象基类型。() 11、在C#中,类的构造函数可以重载,析构函数也可以重载。() 12、在C#中,类的构造函数和析构函数都不能被继承。()
13、在C#中,定义一个类时,声明了一个构造函数,则编译器不会再提供默认的构造函数。()
14、在C#中,可以为类的字段指定默认值。()
15、在C#中,在类的属性声明中,只有get访问器表明属性只能读出而不能写入。() 16、在C#中,允许同一个类中存在两个或多个方法签名一样的成员方法。() 17、在C#中,类的索引器必须作为实例成员。() 18、C#不支持运算符重载。()
19、C#不支持私有继承和保护继承。()
20、在C#中,类的成员默认访问修饰符是private,而接口的成员默认访问修饰符是public。()
21、在C#中,接口的成员声明中包含任何修饰符都是错误的。() 22、在C#中,抽象类可以包含构造函数,接口不能包含构造函数。() 23、在C#中,抽象类和接口都不能直接实例化。()
24、在C#中,定义一个类时,用户不可以声明一个析构函数,因为析构函数是由编译器自动生成的。()
25、C#中抽象方法是隐式的虚方法,实现抽象方法用关键字override。()
四、程序阅读
1、阅读下面代码,写出输出结果:
using System; public class A {
public static void Method1(out int x, params object[] objs)
{
x = 0;
foreach (object obj in objs)
x += int.Parse(obj.ToString()); } };
public class Test {
static void Main() {
int x;
A.Method1(out x, 1, 2, 3, 4, 5); Console.WriteLine(x); } }
输出结果:
______________________________
2、阅读下面代码,写出输出结果:
using System; public class A {
public static void Method1(ref int x, int y) {
int temp = x; x = y; y = temp; } };
public class Test {
static void Main() {
int x = 1, y = 2; A.Method1(ref x, y);
Console.WriteLine(\, x, y); } }
输出结果:
______________________________
3、阅读下面代码,写出输出结果:
using System; public class A {
public A() { Console.WriteLine(\构造函数A\); } ~A() { Console.WriteLine(\析构函数A\); } };
public class B:A {
public B() { Console.WriteLine(\构造函数B\); } ~B() { Console.WriteLine(\析构函数B\); } };
public class Test {
static void Main() {
A a = new B(); } }
输出结果:
______________________________ ______________________________ ______________________________ ______________________________
4、阅读下面代码,写出输出结果:
using System; public class A {
public static int i = 1;
public A() { Console.WriteLine(\构造函数A\); } static A() { Console.WriteLine(\静态构造函数A\); } ~A() { Console.WriteLine(\析构函数A\); } };
public class Test {
static void Main() {
A a = new A(); } }
输出结果:
______________________________ ______________________________ ______________________________
5、阅读下面代码,写出输出结果:
using System; public class A {
public static int i = 1;
public A() { Console.WriteLine(\构造函数A\); } static A() { Console.WriteLine(\静态构造函数A\); } ~A() { Console.WriteLine(\析构函数A\); } };
public class B : A {
public B() { Console.WriteLine(\构造函数B\); } ~B() { Console.WriteLine(\析构函数B\); } };
public class Test {
static void Main() {
A a = new B(); } }
输出结果:
______________________________ ______________________________ ______________________________ ______________________________ ______________________________
6、阅读下面代码,写出输出结果:
using System; public class A {
private int length = 5;
private string[] names = new string[5]; public int Length {
get { return this.length; } }
public string this[int index] {
get { return names[index]; } set { names[index] = value; } }
};
public class Test {
static void Main() {
A a = new A();
for (int i = 0; i < a.Length; i++) a[i] = i.ToString(); Console.WriteLine(a[3]); } }
输出结果:
______________________________
7、阅读下面代码,写出输出结果:
using System; public class A {
public void fun1(int n) {
Console.WriteLine(\的2倍={1}\, n, 2 * n); }
public void fun2(int n) {
Console.WriteLine(\的3倍={1}\, n, 3 * n); } };
public delegate void mydelegate(int n); public class Test {
static void Main() {
A a = new A();
mydelegate p = new mydelegate(a.fun1); p += a.fun2; p(1); } }
输出结果:
______________________________ ______________________________
8、阅读下面代码,写出输出结果:
using System;