《深入.NET平台和C# 编程》内测纠错记录



1.  .NET框架的核心组件包括(BD)(选择两项)

  A.CTS   (通用类型系统)

  B.CLR   (公共语言运行时,.NET的基础)

  C.CLS   (公共语言规范)

  D.FCL   (框架类库,.NET一个综合性的面向对象集合)


2.  在C#中下列选项说法正确的是(B)。

A.一个类允许有一个以上的父类               (单根性)

   B.父类包含公开属性A,则子类构造函数内部可以访问A

   C.一个类的继承层次不允许超过3层          (传递性)

D.如果X是Y的子类,Z是Y的父类,则Z是X的子类    (X是子类,Y是父类,Y是Z的子类,X是Z的子类)


3. 在C#中,关于文件操作相关的类说法正确的是(AB)(选择两项)。

A. FileInfo类提供了用于操作文件的实例方法

  B. File类提供了用于操作文件的静态方法

  C. Directory类提供了操作目录的实例方法              (Directory类提供了操作目录的静态方法)

  D. DirectoryInfo类提供了操作目录的静态方法        (DirectoryInfo类提供操作目录的实例方法)


4.关于C#抽象类和抽象方法,以下说法错误的是(C)。

 A.定义抽象类和抽象方法时使用abstract修饰

 B.抽象方法不能定义方法主体

 C.抽象方法和虚方法一样,可以定义在除了密封类之外的所有类之中

 D.使用抽象类和抽象方法可以实现多态


5.下列关于List<T> 的说法错误的是(D)。

 A.List<T>类的用法类似于ArrayList

 B.List<T>要比ArrayList有更大程度的类型安全性

 C.访问List<T>中的元素是无须做类型转换

 D.List<T>中的T只能是值类型           (string也可以)


6.在C#中,如果要实现父类的成员在父类及其子类中可以访问,而且他类中无法访问,应使用()修饰

符修饰该成员。

 A.public

 B.private

 C.base

 D.protected     (受保护的)


7.在C#中,以下Teacher类中的构造函数的写法正确的是(AC)(选择两项)。

 A. public Teacher(){}

 B. private void Teacher(){}                一个私有的Teacher方法,返回值为空

 C. private Teacher (int id,string name){}

 D. public int Teacher (int id,string name){}     返回值为int类型的带参方法


8.在.NET中,下面关于.NET Framework描述错误的是(D)

 A. .NET框架可以安装在Wiondows操作系统上

 B. .NET框架是运行在操作系统之上的

 C. .NET框架支持C#,VB.NET,C++等开发语言

 D. .NET应用程序不能运行在Linux上


9. 在.NET中创建文件流的时候,需要指定文件模式FileMode的值,下面对FileMode的值解释正确的是(AC)

 (选择两项) 

 A:Create:用指定的名称新建文件。如果文件存在,则覆盖原有的

 B:CreateNew:新建一个文件。如果已存在,则不做处理               (CreateNew 新建一个文件。如果文件存在会发生异常,提示文件已经存在。)

C:Open:打开一个文件。文件必须存在,否则报错

D:OpenOrCreate:打开或新建一个文件。如果文件不存在,则新建但不打开它   (OpenOrCreate:如果文件不存在,则用指定的名称新建一个文件并打开它)


10.在.NET中使用文件的时候,会经常遇到乱码的问题,下面选项中关于乱码说法正确的是(C)

 A:处理乱码使用Encoding,Encoding是一个枚举类型

 B:在写入文件内容的时候指定其编码格式,可以避免出现乱码

 C:在读取文件的时候,指定解析文件的编码格式,可以解决乱码问题

 D:Encoding位于System.Data命名空间

解析:

使用文件出现乱码本质是文件保存的编码和读取时使用的编码方式不一致。写入文件指定编码格式,不能解决问题,在读取文件时,指定和文本保存时一致的编码格式,则不会出现乱码;Encoding位于System.Text命名空间


11.在.NET中,下列关于Directory类和DirectoryInfo类说法正确的是(A)

 A:Directory类的方法都是静态的,可以直接调用

 B:DirectoryInfo类的方法都是静态的,可以直接调用

 C:Directory类和DirectoryInfo类都可以用Exist()方法检验指定目录是否存在

 D:Directory类的GetFile()方法返回的是指定目录下的FileInfo对象数组

解析:

Directory类的方法都是静态的,可以直接调用,DirectoryInfo类的方法不是静态的,所以要通过实例化调用。Directory包含Exist()方法,DirectoryInfo包含Exist属性,Directory类的GetFiles()方法返回指定目录下的文件名字字符串数组


12.在以下C#代码中,横线处填写(BD)不会出错。<选择二项>

  Dictionary<int,string>dic=new Dictionary<int,string>();

  dic.Add(1,"C#OOP");

  Console.WriteLine(_____________);

  A:dic["C#OOP"]

  B:dic[dic.Count]

  C:dic[0]

  D:dic[1]


13.在C#代码中,以下代码输出的结果为(C)

  class Program

  {

  int num=10;

  static void Main(string[]args)

  {

  Console.WriteLine(num++);

  }

  A:11

  B:10

  C:编译报错

  D:运行报错

  解析:

  静态成员只能通过类名调用,在静态方法中一般只能调用静态的成员,

  非静态成员必须通过对象去调用。因此程序编译不通过


14.在C#中,使用集合初始化器初始化集合的用法正确的是(BC)<选择二项>

  A://SE类为已经定义好的类

  List<SE>list=new List<SE>(new SE(),new SE());      (初始化多个元素用{}而不是())

  B://SE类为已经定义好的类

  List<SE>list=new List<SE>{new SE(),new SE()};

  C:ArrayList list=new ArrayList{1,2};

  D:ArrayList list=new ArrayList(){1;2};                      (多个元素用逗号而不是分号分割)


15.在C#中,以下代码执行的结果是(B)。

  public struct Test

  {

   public int num;

  }

  public class Test1

  {

  public static void Change(Test t1,ref Test t2)

  {

  t1.num++;

  t2.num++;

  }

  public static void Main()

  {

  Test t1;

  t1.num=1;

  Test t2;

  t2.num=2;

  Change(t1,ref t2);

  Console.Write(t1.num+","+t2.num);

  }

  }

  A:1,1

  B:1,3

  C:2,2

  D:2,1

  解析:

  ref修饰的值类型按照引用类型传递,结构属于值类型;

  题目中t1没有用ref修饰,值不改变,t2使用了ref修饰,值会改变


16.在C#中,定义Apple类为Fruits类的子类,下列语句不能用于将Fruits类型转换为Apple类型的是(AD)<选择二项>

  A:Fruits fru=new Apple();

  Apple app=fru is Apple;           (is用于判定)

  B: Fruits fru=new Apple();

  Apple app=fru as Apple;

  C: Fruits fru=new Apple();

   Apple app=(Apple)fru;

  D: Fruits fru=new Apple();

  fru.Convert(Apple);                  (Convert不能用在这里)


17.下面的C#代码运行的时候会出现错误的是(BC)<选择二项>

  A:ArrayList a1=new ArrayList();

  a1.Add(100);

  a1.Add(100);

  B: Hashtable ht=new Hashtable();

  ht.Add("张三",new object());         (Hashtable 键  出现重复)

  ht.Add("张三",new object());

  C: List<string>list=new List<string>();

   string name=list[0];                      (无下标0)

  D: Dictionary<string,object>dict=new Dictionary<string,object>();

  foreach(onject p in dict.Values){}


18.在C#中,选项中的方法跟下面的方法属于重载的是(D)。

  public void Add(int a,int b)

 A.public int Add(int a,int b)

 B.public void AddNum(double a,double b)

 C.public void Add(int b,int a)

 D.public void Add(int a,double b)

解析:

方法重载是指方法名相同,而参数类型和参数个数不同,在同一个类中,构造函数和普通方法都可以重载


19:在C#中,下面代码的运行结果是(A)

  public class Fruit

  {

  public virtual void Show()

  {

  Console.WriteLine("水果的味道不同");

  }

  }

  public class Lemon:Fruit

  {

  public override void Show()

  {

  Console.WriteLine("柠檬是酸的!");

  }

  }

  class Program

  {

  static void Main(string[]args)

  {

  Fruit lemon =new Fruit();  <new的是父类对象,因此输出的是父类的方法>

  lemon.Show();

  }

  }

  A:输出“水果的味道不同”

  B:输出“柠檬是酸的!”

  C:程序不出错,但什么也不输出

  D:程序出错,提示对象类型不一致


20.运行以下C#代码,则输出结果是(D)

  public class Child

  {

  public virtual void Like()

  {

  Console.WriteLine("孩子喜欢玩具");

  }

  }

  public class Boy:Child

  {

  public override void Like(string toys)

  {

  Console.WriteLine("男孩喜欢"+toys);

  }

  }

  class Program

  {

  static void Main(string[]args)

  {

  Child child=new Child();

  child.Like("玩具手枪");

  }

  }

  A:孩子喜欢玩具

  B:男孩喜欢玩具手枪

  C:孩子喜欢玩具

  男孩喜欢玩具手枪

  D:程序编译错误,什么也不输出

  解析:

  Boy.Like(string)没有找到适合的方法来重写

上一篇:安卓开发笔记(十八):实现button按钮事件的三种方法


下一篇:sublime Emmet的用法及相关语法