CSharp模拟测试题与解答

  • 格式:doc
  • 大小:69.50 KB
  • 文档页数:5

模拟测试题一、选择题(单选)1.short类型的变量在内存中占据的位数是 B 。

A. 8B. 16C. 32D.642.对于int[4, 5]型的数组a,数组元素a [2, 3]存储在数组第C 个位置上A. 11B. 12C. 14D. 153.设int型变量x、y、z的值分别为2、3、6,那么执行完语句(z −= y −= x −= z)后它们的值为 C 。

A. 3, 1, -4B. 3, 1, -1C. -4, 7, -1D. 4, 7, -44.以下说法中不正确的 CA. 构造函数和析构函数都不能有返回值B. 构造函数可以是静态的C. 一个类只能有一个构造函数D. 一个类只能有一个析构函数5.以下不属于Object类型的成员方法的是 B 。

A. ToString()B. Dispose()C. Finalize()D. GetType()6.设double型变量x表示一个角度,那么将其转换为弧度的表达式为 C 。

A. x * 180 / Math.PIB. x * 360 / Math.PIC. x * Math.PI / 180D. x * Math.PI / 3607.令object x = 100,那么下列表达式会引发异常的是 A 。

A. int i = x;B. string s = (string)x;C. bool b = x is string;D. object o = x as string;8.下列能够被创建对象的是 C 。

A. 接口B. 抽象类C. 委托D. 只有私有构造函数的类9.关于接口和抽象类,那么说法中正确的是 B 。

A. 接口不能创建对象,而抽象类可以B. 接口不能包含字段,而抽象类可以C. 抽象类中的方法必须是抽象方法D. 接口中的方法也可以有实现代码10.关于finally代码段,那么说法正确的是 D 。

A. 仅在程序正常时执行B. 仅在程序发生异常时执行C. 在程序发生异常时会被跳过D. 无论程序是否发生异常都会被执行11.下列类型中,不支持IEnumerable<T>接口的是 A 。

A. T[]B. List<T>C. Queue<T>D. Dictionary<K,T>12.Nullable<T>是 B 类型。

A. classB. structC. interfaceD. 以上都不是13.单击一个CheckBox控件,那么下列事件的引发顺序为 C 。

A. Click, MouseDown, MouseUp, CheckedChangedB. MouseDown, Click, MouseUp, CheckedChangedC. MouseDown, Click, CheckedChanged, MouseUpD. MouseDown, CheckedChanged, Click, MouseUp14.CLR是指 C 。

A. 公共类型系统B. 公共语言规范C. 公共语言运行时D. 动态语言运行时15.要读取数据库中某个表格的记录数,应当执行DbCommand对象的方法是 D 。

A. ExecuteB. ExecuteNonQueryC. ExecuteScalarD. ExecuteReader16.要修改数据库中的某条记录,应当执行DbCommand对象的方法是 B 。

A. ExecuteB. ExecuteNonQueryC. ExecuteScalarD. ExecuteReader17.一个数据适配器用于向一个 A 对象中填充数据。

A. DataSetB. DataTableC. DataRowD. DataColumn18.要在Web应用程序中访问URL地址中的参数字符串,可访问 B 对象的QueryString属性。

A. HttpApplicationB. HttpRequestC. HttpReqsponseD. HttpBrowserCapability19.以下可在客户端缓存网页数据的是 CA. ApplicationStateB. SessionStateC. CacheD. Cookie20.在Web Service中定义的方法,能够从网络上访问的是 DA. 非私有方法B. 公有方法C. 扩展方法D. 使用[WebMethod]特性修饰的方法二、问答题1.写一段对数组进行排序的程序代码。

int[] intArray = new int[]{2,3,6,1,4,5};Array.Sort(intArray);Array.ForEach<int>(intArray,(i)=>Console.WriteLine(i));2.什么是装箱和拆箱?答:装箱是从值类型到引用类型的隐式转换;拆箱是从引用类型到值类型的显示转换。

3.怎样使一个类不能被外部创建对象?“类的构造函数私有化”方式当一个类的构造函数设置为private之后,外界将无法使用new关键字来创建这个类的对象。

例子class Only Youclass OnlyYou{//构造函数私有,外界不能用new直接创建对象private OnlyYou(){} //用于保存“独生子”的静态对象变量private static OnlyYou OnlyYouObject = null;public static OnlyYou GetOnlyYouObject (){if (OnlyYouObject == null) //对象未创建,则创建对象OnlyYouObject =new OnlyYou ();//向外界返回已创建对象的引用return obj;}}类OnlyYou的关键在于两点:(1)构造函数私有,则外界无法用new关键字直接创建对象;(2)提供一个公有静态方法向外界返回已创建对象的引用。

4.怎样使一个类只能被创建一个对象?类的内部设置一个对象计数器,通过检查此计数器的值来确定是否要新建一个对象。

class OnlyYou{private static int ObjectCounter = 0;//对象计数器private static OnlyYou OnlyYouObject = null;public static OnlyYou GetOnlyYouObject(){if (ObjectCounter == 0){OnlyYouObject = new OnlyYou();ObjectCounter++;}return OnlyYouObject;}}5.简述C#对接口方法的两种实现方式。

答:通过类型的公有方法来实现接口方法叫隐式实现;在类型的方法名之前加上接口名叫显式实现。

6.说说抽象方法和虚拟方法的相同点与不同点。

抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。

7.采用new 和override修饰符所修饰的方法,二者之间的区别是什么?答new:隐藏基类方法,默认调用自身实现的方法,但是可以显示的指定调用父类方法override:覆盖了父类的方法只能调用自身。

8.写一段程序代码,为整数类型定义一个扩展方法,通过它能够判断整数是否为素数。

using System;using System.Collections.Generic;using System.Text;namespace Test_1 {class PrimeNumber {static void Main(string[] args) {Console.WriteLine( "请输入一个数: ");double number = Convert.ToDouble(Console.ReadLine());int i = 2;bool isushu = true;double k = Math.Sqrt(number);for (i = 2; i < k; i++) {if (number % i == 0){Console.WriteLine( "此数不是素数");isushu = false;break;}}if (isushu == true){Console.WriteLine( "此数是素数");}}}}9.写一段代码,创建一个“猫”对象和多个“老鼠”对象,模拟“猫一叫,所有的老鼠都开始跑”的场景实现。

10.C#中事件和委托的关系是什么?类的事件成员和一般的委托型成员有什么不同?处理事件的第一步是定义一个委托原型,通过它来规范事件的格式。

委托是一种定义方法签名的类型,可以与具有兼容签名的任何方法关联。

可以通过委托调用方法。

委托用于将方法作为参数传递给其他方法。

事件处理程序就是通过委托调用的方法。

与委托的签名匹配的任何可访问类或结构中的任何方法都可以分配给该委托。

11.简述C#中的泛型约束机制。

答:限制方法包括主要限制,次要限制和构造函数限制。

主要限制是将类型参数的目标类型限制为值类型或引用类型。

次要限制是将类型参数的目标类型限制为从指定的基类或接口继承。

构造函数限制是要求其目标类型必须提供一个默认的无参构造函数。

12.什么叫做匿名方法,它的作用是什么?答:匿名方法指跳过方法的定义,而将方法的执行代码直接封装在一个委托对象中。

作用可以不写出该方法的完整定义,而是将方法的执行代码转移到委托的实例化过程中。

13.写一段代码,基于List<T>类型来实现一个泛型优先级队列PriQueue<T>。

14.简述C#中可枚举对象和遍历器的工作原理。

15.简述在WPF中对控件应用动画的两种基本方式。

16.简述中的DbConnection、DbCommand、DbDataReader这三个类型的作用以及它们之间的关系。

17.简述中的DataSet、DataTable、DataAdapter这三个类型的作用以及它们之间的关系。

DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,应用程序开始运行时,把数据库相关数据保存到DataSet.DataTable表示内存中数据的一个表.常和DefaultView使用获取可能包括筛选视图或游标位置的表的自定义视图。

DataReader对象是用来读取数据库的最简单方式,它只能读取,不能写入,并且是从头至尾往下读的,无法只读某条数据,但它占用内存小,速度快DataAdapter对象是用来读取数据库.可读取写入数据,某条数据超着强,但它占用内存比dataReader大,速度慢18.LINQ技术框架的三个基本组成部分是什么?19.举出三个在网站应用程序中跳转到另一个网页的方法。