C#习题集(5)

2019-06-02 13:18

A) 重载方法的参数个数必须不同 C) 重载方法必须具有不同的返回值类型 B) 重载方法必须具有不同的形参列表 D) 重载方法的参数类型必须不同

21.关于静态成员,下列说法正确的是【 】。

A) 同一个类中的静态成员,类实例化后,在不同的对象中形成不同的静态成员 B) 在类实例化后,同类型的对象都共享类的静态成员,静态成员只有一个版本 C) 在类定义时静态成员属于类,在类实例化后静态成员属于对象 D) 在类实例化后静态成员已被实例化,因此不同的对象有不同的静态成员 22.下列关于静态方法的说法,错误的是【 】。

A) 静态方法不对特定实例进行操作,不与实例相关联 B) 使用静态方法的语法格式:类名.静态方法(实参列表) C) 静态方法只能访问类中的静态成员,不能访问非静态成员 D) 静态方法不能访问类中的静态成员 23.已知: int a=100;

void Func(ref int b) { …… } 则下列函数调用正确的是【 】。

A) Func(ref(10*a)) B) Func(ref 10*a) C) Func(ref(a) ) 24.下面对方法中的ref和out参数说明错误的是【 】。

D) Func(ref a)

A) ref和out参数传递方法相同,都是把实参的内存地址传递给形参,实参与形参指向同一个内存存储区域,但ref要求实参必须在调用之前明确赋过值 B) ref是将实参传入形参,out只能用于从方法中传出值,而不能从方法调用处接受实参数据。 C) ref和out参数因为传递的是实参的地址,所以要求实参和形参的数据类型必须一致 D) ref和out参数要求实参和形参的数据类型或者一致,或者实参能被隐式地转化为形参的类型 25.设方法Max的签名为:public void Max(out int max, params int[] a),maxval是一个int型的值类型变量,arrayA是一个int型的数组对象,则下列调用该方法的语句中有错的是【 】。 A) Max(maxval,4,5,3) C) Max(out maxval, arrayA) 26. 有以下类声明:

class Class1

{ public static int Count = 0;

public Class1() { Count++; } }

在执行以下语句后,Class1.Count的值是【 】。

Class1 o1 = new Class1(); Class1 o2 = new Class1();

A) 1 B) 2 27.在类MyClass中有下列方法定义:

C) 3

D) 0

}

B) Max(out maxval, 4, 5, 3) D) Max(out maxval, 4, 5)

public void test(params int[] arr) { Console.Write(\使用params参数!\

public void test(int x, int y) { Console.Write(\使用两个整形参数!\ } 请问上述方法重载有无二义性?若没有,则下列语句的输出为【 】。 Myclass x=new MyClass(); x.test(0); x.test(0,1); x.test(0,1,2); A) 有语义二义性

B) 使用params参数!使用params参数!使用params参数! C) 使用params参数!使用两个整形参数!使用params参数! D) 使用params参数!使用两个整形参数!使用两个整形参数!

- 20 -

28.分析以下C#语句,注意类MyClass没有访问修饰符。若必须为类MyClass添加访问修饰符,并

使MyClass的可访问域保持不变,则应选择【 】。

namespace test

{ class MyClass

{ }

A) private B) public C) protected 29.C#中MyClass为一个自定义类,其中有以下方法定义:

D) internal

int i;

}

public void Hello() { …… }

并使用以下语句创建了该类的对象obj,则可以访问类MyClass的Hello方法的语句是【 】。

MyClass obj=new MyClass()

A) obj.Hello() B) obj:Hello() C) MyClass.Hello 30.下列的关键字中可用于引用类的当前实例的是【 】。

D) MyClass:Hello

A) base B) this C) new D) override 31.在C#中,以下有关索引器的参数个数的说法中正确的是【 】。

A) 索引器只能有一个参数 C) 索引器可以没有参数

B) 索引器可以有多个参数 D) 索引器至少要有两个参数 C) operator

D) event

32.委托声明的关键字是【 】。 A) delegate B) sealed 33.以下语句的作用是【 】。

public delegate void Hello(string s); A) 声明了一个名称为Hello的全局方法 B) 声明了一个名称为Hello的函数原型 C) 声明了一个名称为Hello的函数指针 D) 声明了一个名称为Hello的委托类型

34.有声明语句:delegate void TimeDelegate(string s),则以下可以和委托TimeDelegate绑定的方法

是【 】。

A) void f(){ } B) string f(){ } C) void f(string a){ } D) string f(string a){ }

35.声明一个委托类型:public delegate int myCallBack(int x); 则以下可以和委托myCallBack绑定的

方法是【 】

A) void myCallBack(int x); B) int receive(int num); C) string receive(int x); D) 不确定的 36.有以下部分C#代码,其中MyDelegate是一个【 】。

static void fun(string s) { Console.WriteLine(s); } public static void Main()

{ MyDelegate p=new MyDelegate(fun); }

p(\

C) 函数

D) 类名

A) 结构类型; B) 委托类型 37.对于下面声明的委托和定义的类:

delegate int Mydelegate(int n); class A

{ public int f(int i) { return 0; }

public void g(int j) { }

public static int h(int k) { return 0; }

}

下面语句中哪些是正确的【 】。

- 21 -

Mydelegate d1=new Mydelegate(A.h); A a=new A();

Mydelegate d2=new Mydelegate(a.f); Mydelegate d3=new Mydelegate(a.g);

//语句1 //语句2 //语句3

Mydelegate d4=new Mydelegate(a.h); A) 语句1、语句2、语句3、语句4 C) 语句3、语句4 38.以下用于定义事件的关键字是【 】。

//语句4 B) 语句1、语句2 D) 语句2、语句3

A) delegate B) event C) this D) value 39.将发生的事件通知其他对象(订阅者)的对象称为事件的【 】。 A) 广播者 B) 发行者 C) 通知者 40.已知类MyClass中事件MouseClicked定义如下:

public delegate void mydelegate();

public event mydelegate MouseClicked(); 执行下列语句:

Method obj=new Method(); MyClass e=new MyClass();

D) 订阅者

e. MouseClicked +=obj.fun; e. MouseClicked +=obj.fun;

其中Method类中包含事件处理方法fun,然后引发该MouseClicked 事件,其结果为【 】。 A) obj.fun方法被调用一次 C) obj.fun方法不会被调用 二.填空题

1.【 类 】是面向对象编程的基础模块,在C#中,所有的内容都被封装在其中。 2.声明类之后,通过new创建【 类对象 】,它是一个引用类型的变量。

3.静态字段是用【 static 】修饰符声明的字段,无论存在多少个类实例,它们都共享一个字段副本。 4.定义方法时使用的参数是【形参】,调用方法时使用的参数是【 实参 】。

5.数据类型说明符用来说明方法返回值的类型,如果没有返回值,则类型说明符应为【 void 】。 6.下列方法的作用是求两个数的较大数,并把较大数作为返回值,请填空。 float max_v(【 (1)】)

{ }

(2) return(max)

float max; max=a;

if(max

B) obj.fun方法被调用二次 D) obj.fun方法被调用四次

(1) int a, int b

7.在调用方法时,要使参数按引用方式进行传递,需要使用关键字【 ref 】。

8. 在调用方法时,要使参数按输出方式进行传递,需要使用关键字【 out 】,此时并不要求实参变量已经初始化。 9.在类的成员声明时,若使用了【protected】修饰符,则该成员只能在该类或其派生类中进行访问。 10.类的静态成员属于【 类 】所有,非静态成员属于类的实例所有。

11.已知某类的类名为ClassA,则该类的析构函数名为【~ClassA 】。

12.C#方法的参数有四种,分别是:值参数(对应值传递)、引用参数(对应地址传递)、输出参

数和参数数组,在形参中声明参数数组时应使用【params】关键字。

- 22 -

13.要给属性对应的数据成员赋值,通常要使用set访问器,set访问器始终使用【 value】来设置

属性的值。 14.声明一个公有委托类型MyFun1,该委托类型可以与无参且返回值为int类型的方法相关联,则

该声明语句应为【 public delegate int MyFun1(); 】。 15.下列程序的输出结果是【 30 】。 class Program { static void sub(int x, int y, int z)

{ { }

}

16.下列程序的运行结果是【3,5 】。

class program

{ static void Func(int a, out int x,out int y) }

{ x=a/10; y=a; static void Main() { }

int m=35;

int a, b;

}

z=x*x+y*y; int a=30;

sub(5, 2, a);

Console.WriteLine(\

}

public static void Main(string[] args)

Func(m, out a,out b);

Console.WriteLine(\

17.下列程序的运行结果是【 18 】。

class A

{ private int x;

public static A operator -(A b, A c)

{ A a=new A();

a.x=b.x * c.x; return a;

}

public void setx(int x) { this.x=x; }

public int getx(){ return x; } }

class Program { static void Main() { A a=new A(); A b=new A(); A c = a - b;

a.setx(3); b.setx(6);

Console .WriteLine (\ }

}

18. 下列程序的运行结果是【中国地质大学 】。

public class University { const int MAX = 10;

- 23 -

private string[] name = new string[MAX]; public string this[ int index ]

{ get

{ if (index >= 0 && index < MAX) return name[index]; else return name[0]; } set

{ if (index >= 0 && index < MAX) name[index] = value; }

} }

class Program { static void Main()

{ University un=new University(); un[0] = \清华大学\ un[1] = \北京大学\ un[2] = \中国地质大学\ Console.WriteLine(un[2]); } }

三.改错题

(说明:下列程序中部分下划线的代码有错误,请将有错误的部分改正过来,并说明原因) 1.

class A {

A(){ } }

A a=new A();

答:“A(){ }”应改为“public A(){ }”。因为在默认修饰符的情况下,类中的成员被默认为私有成员,

因此在用A创建a时试图调用此构造函数,会因此构造函数为私有成员而拒绝访问。 2. class A

{

public static int x=100; public int y=200; }

class Program

{ static void Main(string[] args)

{ }

A a=new A(); a.x=10; a.y=20;

}

答:“a.x=10;”应改为“A.x=10;”。因为x是类A中的静态成员。 3. class A

{ }

A(){ } void A(){ }

private A(int x){ } private A(int y){ }

- 24 -


C#习题集(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大兴区招标投标管理办法(试行)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: