C#习题三

一. 单选题

1. (单选题)在C#中,属性从读/写特性上进行分类,可以划分为3种,除了_____________。

A. 只读属性

B. 只写属性

C. 读/写属性

D. 不可读不可写的属性

正确答案: D

2. (单选题)在C#中,以下关于属性的描述正确的是____________。

A. 属性是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性

B. 属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏

C. 要定义只读属性,只需在属性名前加上readonly关键字即可

扫描二维码关注公众号,回复: 14131996 查看本文章

D. 在C#的类中不能自定义属性

正确答案: B

3. (单选题)以下类MyClass的属性count属于______________属性。

class MyClass

{

    int i;

    int count

    {  get{  return;   }   }

}

A. 只写

B. 只读

C. 可读/写

D. 不可读不可写

正确答案: B

4. (单选题)以下关于C#中方法重载的说法正确的是_________________。

A. 如果两个方法名称不同,而参数的个数不同,那么它们可以构成方法重载

B. 如果两个方法名称相同,而返回值的数据类型不同,那么它们可以构成方法重载

C. 如果两个方法名称相同,而参数的数据类型不同,那么它们可以构成方法重载

D. 如果两个方法名称相同,而参数的个数相同,那么它们一定不能构成方法重载

正确答案: C

5. (单选题)以下_____________不是构造函数的特征。

A. 构造函数的函数名和类名相同

B. 构造函数可以重载

C. 构造函数可以带有参数

D. 可以指定构造函数的返回值

正确答案: D

6. (单选题)在C#中,以下有关索引器的参数个数的说法正确的是_______________。

A. 索引可以没有参数

B. 索引器只能有一个参数

C. 索引器可以有多个参数

D. 索引器至少要有两个参数

正确答案: C

7. (单选题)在类MyClass中有下列方法定义:

public void testParams(params int[] arr)

{  Console.Write("使用Params参数!");  }

public void testParams(int x,int y)

{  Console.Write("使用两个整型参数!");  }

请问上述方法重载有无二义性?若没有,则下述语句的输出为____________。

MyClass x=new MyClass();

x.testParams(0);

x.testParams(0,1);

x.testParams(0,1,2);

Console.WriteLine();

A. 使用Params参数!使用两个整型参数!使用Params参数!

B. 使用Params参数!使用Params参数!使用Params参数!

C. 使用Params参数!使用两个整型参数!使用两个整型参数!

D. 有语义二义性

正确答案: A

8. (单选题)以下程序的输出结果是____________。

using System;

namespace aaa

{

     class Example1

     {

         static long sub(int x,int y)

         {

              return x*x+y*y;

         }

         public static void Main()

         {

             int a=30;

             sub(5,2);

             Console.WriteLine("{0}",a);

         }

     }

}

A. 0

B. 29

C. 30

D. 无定值

正确答案: C

9. (单选题)C#中的MyClass是一个自定义类,其方法定义为public void Hello(){  ...   }。然后创建该类的对象,并使用变量obj引用该对象,语句为“MyClass obj=new MyClass();”,那么可访问类MyClass的Hello方法的语句是___________。

A. obj.Hello();

B. obj::Hello();

C. MyClass::Hello();

D. MyClass.Hello();

正确答案: A

10. (单选题)分析以下C#语句,注意类MyClass没有显示地指定访问修饰符:

namespace aaa

{

     class MyClass

     {

         public class subclass

         {    int i;       }

     }

}

类MyClass的默认访问修饰符是_____________。

A. public

B. protected

C. private

D. internal

正确答案: D

11. (单选题)分析下列程序:

public class MyClass

{

     private string _sData="";

     public string sData

     {

           set{    _sData=value;   }

     }

}

在Main函数中成功创建该类的对象obj后,以下___________语句是合法的。

A. obj.sData="It is funny!";

B. Console.WriteLine(obj.sData);

C. obj._sData=100;

D. obj.set(obj.sData)

正确答案: A

12. (单选题)以下_________________关键词用于委托类型。

A. event

B. this

C. delegate

D. value

正确答案: C

13. (单选题)以下关于委托和委托类型的叙述正确的是__________________。

A. 委托不是一种类的成员

B. 委托必须在类中定义

C. 定义委托需要使用delegate关键词

D. 委托类型是一种数据类型

正确答案: C

14. (单选题)分析下列语句:

namespace NS

{

     public delegate void Hello(string target);

}

该语句的作用是_______________。

A. 在NS命名空间中定义了一个名为Hello的全局方法

B. 在NS命名空间中函数Hello的原型

C. 在NS命名空间中定义了一个名为Hello的函数指针

D. 在NS命名空间中定义了一个名为Hello的委托类型

正确答案: D

15. (单选题)在C#中,以下关于命名空间的叙述正确的是___________。

A. 在一个.cs文件中只能存在一个命名空间

B. 命名空间不可以嵌套

C. 使用private修饰的命名空间,其内部的类不允许访问

D. 命名空间使得代码更加有条理、结构更清晰

正确答案: D

16. (单选题)以下_____________关键字用于定义事件。

A. delegate

B. event

C. this

D. value

正确答案: B

17. (单选题)将发生的事件通知其他对象(订阅者)的对象称为事件的_____________。

A. 广播者

B. 通知者

C. 发行者

D. 订阅者

正确答案: C

18. (单选题)在C#中,一个类____________。

A. 可以继承多个类

B. 可以实现多个接口

C. 在一个程序中只能有一个子类

D. 只能实现一个接口

正确答案: B

19. (单选题)以下关于继承机制的叙述正确的是____________。

A. 在C#中任何类都可以被继承

B. 一个子类可以继承多个父类

C. object类是所有类的基类

D. 继承有传递性,如果A类继承B类,B类又继承C类,那么A类也继承C类

正确答案: C

20. (单选题)____________关键字用于在C#中从派生类中访问基类的成员。

A. new

B. super

C. this

D. base

正确答案: D

21. (单选题)在C#中,在派生类中对基类的虚函数进行重写,要求在派生类的声明中使用__________。

A. override

B. new

C. static

D. virtual

正确答案: A

22. (单选题)

有以下程序:

using System;

namespace aaa

{

     class A

     {

         public A()

         {

              Console.Write("A");

         }

     }

     class B:A

     {

         public B():base()

         {

               Console.WriteLine("B");

         }

     }

     class Program

     {

          public static void Main()

          {

               B b=new B();

          }

     }

}

上述代码运行后将在控制台窗口输出__________。

A. A

B. B

C. A B

D. B A

正确答案: C

23. (单选题)以下关于抽象类的叙述中,错误的是____________。

A. 抽象类中可以包含非抽象方法

B. 含有抽象方法的类一定是抽象类

C. 抽象类不能被实例化

D. 抽象类可以是密封类

正确答案: D

24. (单选题)在C#中,接口与抽象基类的区别在于____________。

A. 抽象类中可以包含非抽象方法,而接口不包含任何方法的实现

B. 抽象类可以被实例化,而接口不能被实例化

C. 抽象类不能被实例化,而接口可以被实例化

D. 抽象类能够被继承,而接口不能被继承

正确答案: A

25. (单选题)以下关于抽象类和接口的叙述中,正确的是_____________。

A. 在抽象类中所有的方法都是抽象方法

B. 继承自抽象类的子类必须实现其父类(抽象类)中的所有抽象方法

C. 在接口中可以有方法实现,在抽象类中不能有方法实现

D. 一个类可以从多个接口继承,也可以从多个抽象类继承

正确答案: B

26. (单选题)多态是指两个或多个不同对象对于同一个消息做出不同响应的方式。C#中的多态不能通过___________实现。

A. 接口

B. 抽象类

C. 虚方法

D. 密封类

正确答案: D

27. (单选题)分析下列程序中类MyClass的定义:

class BaseClass

    {

        public int i;

    }

    class MyClass:BaseClass

    {

        public new int i;

    }

则下列语句在Console上的输出为_______________。

MyClass y = new MyClass();

BaseClass x = new BaseClass();

 x.i = 100;

 Console.WriteLine("x.i={0},y.i={1}",x.i,y.i);

A. 0,0

B. 100,100

C. 0,100

D. 100,0

正确答案: D

28. (单选题)在接口和类的区别中,正确的是________________。

A. 类可以继承,而接口不可以

B. 类不可以继承,而接口可以

C. 类可以多继承,而接口不可以

D. 类不可以多继承,而接口可以

正确答案: D

29. (单选题)在C#中定义以下IPlay接口,实现此接口的代码正确的是___________。

interface IPlay

{

    void Play();

    void Show();

}

A.

class Teacher:IPlay

{

    void Play(){   //省略部分代码    }

    void Show(){  //省略部分代码    }

}

B.

class Teacher:IPlay

{

    public string Play(){   //省略部分代码    }

    void Show(){  //省略部分代码    }

}

C.

class Teacher:IPlay

{

    void Play();

    void Show(){  //省略部分代码    }

}

D.

class Teacher:IPlay

{

    public void Play(){   //省略部分代码    }

    public void Show(){  //省略部分代码    }

}

正确答案: D

30. (单选题)以下程序的输出结果是____________。

using System;

namespace aaa

{

    public class Vehicle

    {

         private int speed=10;

         public int Speed

         {

              get{  return speed;    }

              set

              {

                   speed=value;

                   Console.WriteLine("禁止驶入");

              }

         }

    }

    public class NewVehicle:Vehicle

    {    public NewVehicle()

         {

                if(this.Speed>=20)     Console.Write("机动车!");

                else  Console.Write("非机动车!");

          }

    }

    public class Program

    {

        public static void Main()

        {

             NewVehicle tong=new NewVehicle();

             tong.Speed=30;

        }

    }

}

A. 禁止驶入非机动车!

B. 非机动车!禁止驶入

C. 禁止驶入机动车!

D. 机动车!禁止驶入

正确答案: B

31. (单选题)以下程序的输出结果是____________。

using System;

namespace aaa

{

    public class Person

    {

        private int age=0;

        public int Age

        {

             get{    return age;   }

             set

             {     if(value>=18)    Console.WriteLine("成年人");

                   else    Console.WriteLine("非成年人");

                   age=value;

             }

        }

    }

    public class People:Person

    {

         public People()

         {

              Console.Write("不得入内");

         }

    }

    public class Program

    {

         public static void Main()

         {

              People wang=new People();

              wang.Age=25;

         }

    }

A. 非成年人不得入内

B. 成年人不得入内

C. 不得入内非成年人

D. 不得入内成年人

正确答案: D

32. (单选题)以下关于静态方法的说法,不正确的是______________。

A. 静态方法不对特定实例进行操作

B. 静态方法只能直接访问静态成员

C. 在静态方法在引用this会导致编译时错误

D. 静态方法通过类的实例来访问

正确答案: D

33. (单选题)以下关于实例方法的说法,不正确的是__________________。

A. 实例方法通过类来访问

B. 实例方法对类的某个给定的实例进行操作

C. 实例方法能够访问静态成员和实例成员

D. 在调用实例方法的实例上,可以通过this显式地访问该实例

正确答案: A

34. (单选题)静态方法不能访问___________________。

A. 同类的静态字段

B. 同类的实例字段

C. 另一个类中的静态字段

D. 另一个类中的实例字段,但必须先创建一个该类的对象,再通过对象名调用

正确答案: B

35. (单选题)以下关于构造函数的说法,不正确的是________________。

A. 构造函数的名称与类名相同

B. 构造函数不能声明返回类型(也不能使用void),也不能返回值

C. 构造函数只能声明为public类型

D. 创建对象时不能显式地调用构造函数

正确答案: C

36. (单选题)以下关于静态构造函数的说法,不正确的是___________。

A. 静态构造函数用于实现初始化实例或对象所需的操作

B. 静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作

C. 类的静态构造函数在给定程序中至多执行一次

D. 静态构造函数既没有访问修饰符,也没有参数

正确答案: A

37. (单选题)以下关于析构函数的说法,正确的是________________。

A. 析构函数没有修饰符,没有返回值类型,但是可以有参数

B. 无法继承析构函数,但是可以重载析构函数

C. 一个类只能有一个析构函数

D. 必须显式调用析构函数来销毁类的实例

正确答案: C

38. (单选题)以下关于静态成员的说法,不正确的是________________。

A. 静态成员属于类,被这个类的所有实例所共享

B. 静态成员必须通过类名来引用

C. 静态函数代码体内既可以直接引用实例成员,也可以直接引用类的静态成员

D. 创建了一个类的多个实例时,其静态字段在内存中占用同一存储区域,即永远只有一个副本

正确答案: C

39. (单选题)调用方法结束后,_____________不再存在。

A. 值传递的形式参数及其值

B. 引用传递的实际参数及其值

C. 用ref修饰的参数及其值

D. 用out修饰的参数及其值

正确答案: A

40. (单选题)在静态方法中不能直接使用________________。

A. 静态字段

B. 实例字段

C. 值传递参数

D. 引用传递的参数

正确答案: B

41. (单选题)调用方法传递参数时,形式参数和实际参数的_____________必须匹配。

A. 类型

B. 名称

C. 地址

D. 访问修饰符

正确答案: A

42. (单选题)以下关于params参数的说法,不正确的是_____________。

A. 形参数组必须位于该列表的最后

B. 形参数组必须是一维数组类型

C. params修饰符可以用out修饰

D. params一定是引用传递的参数

正确答案: C

43. (单选题)已知类MyOwnClass,下面_____________是合法的构造函数的函数头。

A. public static MyOwnClass(){  }

B. public void MyOwnClass(){  }

C. public int MyOwnClass(){  }

D. public  MyOwnClass(){  }

正确答案: D

44. (单选题)当没有定义访问修饰符时,类的成员的默认访问修饰符为_________________。

A. private

B. public

C. protected

D. internal

正确答案: A

45. (单选题)访问修饰符protected internal的可访问性是___________。

A. 访问不受限制

B. 程序集的派生类

C. 程序集和所有本类的派生类

D. 仅限于本类

正确答案: C

46. (单选题)以下关于继承的说法,正确的是_____________。

A. 继承可以避免代码复制和相关的代码维护等问题

B. C#语言一个子类可以继承多个基类(多重继承)

C. C#语言不允许实现多个接口

D. 子类可以继承父类的方法,但不能重新改写父类的方法

正确答案: A

47. (单选题)以下关于密封类的说法,正确的是________________。

A. 密封类可以用作基类

B. 密封类可以是抽象类

C. 密封类永远不会有任何派生类

D. 密封类或密封方法可以重写或继承

正确答案: C

48. (单选题)以下关于this 关键字和base关键字的说法,不正确的是____________。

A. this 关键字用于引用类的当前实例

B. base关键字用于从派生类中访问基类的成员

C. 静态成员函数中不能使用this关键字

D. 静态成员函数中可以使用base关键字

正确答案: D

49. (单选题)以下关于接口的说法,不正确的是__________________。

A. 接口不能实例化

B. 接口中声明的所有成员隐式地为public和abstract

C. 接口默认的访问修饰符是private

D. 继承接口的任何非抽象类型都必须实现接口的所有成员

正确答案: C

50. (单选题)以下关于接口的说法,正确的是____________。

A. 接口成员可以包含常量、字段、运算符、实例构造函数、析构函数或类型

B. 接口成员允许包含运算符重载

C. 接口成员可以包含静态成员

D. 接口成员声明中不允许包含abstract、public、protected、internal、private、virtual、override或static等修饰符

正确答案: D

51. (单选题)派生类要访问基类的成员,可以使用关键字____________。

A. base

B. this

C. out

D. external

正确答案: A

52. (单选题)virtual关键字不可以修饰__________________。

A. 静态字段

B. 属性

C. 索引器

D. 事件

正确答案: A

53. (单选题)虚方法可以使用如下________________修饰符。

A. public virtual

B. public abstract virtual

C. virtual abstract

D. virtual override

正确答案: A

54. (单选题)以下_____________可以成为接口成员。

A. 索引器

B. 常量

C. 字段

D. 析构函数

正确答案: A

55. (单选题)下列关于事件的说法中,不正确的是________________。

A. 事件是发送(生产)者的类中的成员

B. 事件是接收(消费)者的类中的成员

C. 事件可以是实例的,也可以是静态的

D. 事件是一种类的对象,可以包含多个成员

正确答案: B

56. (单选题)下列关于事件的说法中,正确的是______________。

A. 在静态事件的访问器中不可以用this来访问

B. 在实例事件的访问器中可以用this来访问

C. 在静态事件和实例事件的访问器中都可以用this来访问

D. 在静态事件和实例事件的访问器中都不可以用this来访问

正确答案: A

猜你喜欢

转载自blog.csdn.net/qq_45037155/article/details/124707400