c#试题及答案.docx
《c#试题及答案.docx》由会员分享,可在线阅读,更多相关《c#试题及答案.docx(15页珍藏版)》请在冰豆网上搜索。
c#试题及答案
c#试题及答案
LT
A.SqlDataReaderB.DataSetC.SqlDataAdapterD.XmlReader
二、判断题
1当有多个异常要捕获时,应先捕获特殊(具体)异常再捕获普通(一般)异常。
√
2、在控制台应用程序中,若想从键盘上输入数据,可以使用Console.Read()和Console.ReadLine()方法。
√
3、填充数据集应使用SqlDataAdapter的Update()方法×
4、命令对象的ExecuteScalar()方法是在获取单值的时候使用。
√
5、被sealed关键字修饰的方法不能被继承。
√
6、委托是将方法作为参数传递给另一方法的一种数据类型。
事件与委托没有关系。
×
7、try、catch、finally三个字句必须同时出现,才能正确处理异常×
8、try字句中所抛出的异常一定能被catch字句捕获×
9、无论异常是否抛出,finally子句中的内容都会被执行。
√
10、如果使用的整数索引小于0,或者大于数组的大小,编译器将抛出一个IndexOutOfRangeException异常;√
三、填空题
1、System.Array有一个(length)属性,通过它可以获取数组的长度。
2、SQL语句中删除一个表中记录,使用的关键字是(delete)。
3、封装的对象之间进行通信的一种机制叫做( 消息传递)。
4、(Stack)类表示对象的先进后出集合。
5、在异常处理结构中,抛出的异常要用(catch)语句捕捉。
6、Timer控件的(interval)属性,用来指定时钟空间触发时间的时间间隔,单位毫秒。
7、在windows程序中,若想选中复选框,则应将该控件的(Checked)属性设置为true。
8、数据库表中的每一行称为一条(记录)
9、要关闭已打开的数据库连接,应使用连接对象的(close )方法。
10、SQL语句中的选择语句,使用的关键字是(SELECT)。
11、SQL语句中删除一个表中记录,使用的关键字是(delete)。
12、在windows程序中,若想选中复选框,则应将该控件的(checked)属性设置为true。
13、委托声明的关键字是(delegate)。
14、String类的(Compare)方法实现的功能是比较两个字符串的值。
15、使用Message.Show()方法可以显示消息框,消息框的返回值是一个(DialogResult)类型。
四、简答题
1什么是异常?
异常有什么作用?
异常是错误的一种,它的结果是导致程序不能正确运行,如系统崩溃、程序非正常退出、死循环等。
当抛出异常后,程序将不正常终止。
但是,如果能很好的在程序中俘获异常并处理异常,可以增强程序的健壮性。
2.C#中处理异常采用的结构化异常处理语句有哪些?
并简要说明。
C#中共包含3种结构化异常处理语句:
try…catch语句,try…finally语句和try…catch…finally语句。
其中:
try块语句中用来指明有可能出现异常的代码;catch块内指明对所出现的异常的处理,若没有异常,则catch块不执行;finally块是无论是否发生异常均要执行的代码,主要用来清理资源或执行要在try块末尾执行的其它操作,或不需要清理代码,则可以不使用该块。
3什么是委托?
委托与函数指针有何不同?
函数指针用指针获取一个函数的入口地址,实现对函数的操作。
委托与函数指针不同,委托是引用类型,是面向对象的,在使用时要先定义后实例化,然后再调用。
委托可以在运行时间接调用一个或多个方法。
4什么是事件?
事件作为C#的一种类型,主要为类和类的实例定义发出通知的能力,从而将事件和可执行代码捆绑在一起。
事件最常见于窗体编程,如点击按钮事件、鼠标移动事件等等。
5如何在程序中定义和使用自定义事件?
(1)首先,必须在类中声明事件并确定将要使用的委托和参数。
(2)其次,必须定义在触发事件时要调用的委托。
(3)最后,必须设计事件参数类,该参数类的实例会将信息传递给被调用的方法。
如果使用内置的EventArgs对象和EventHandler委托,则可以不执行该步骤。
6对象的方法与对象的事件方法有何异同?
两者都是用一段代码完成特定的功能。
事件方法代码是由用户添加的,事件方法由事件的发生而被自动调用;对象的方法代码是系统预定义的,对用户是隐藏的,不可见的,而且对象的方法必须在代码中调用。
7简述按钮、标签和文本框控件的作用。
按钮控件通常用来接收用户的操作信息,激发相应的事件,按钮是用户与程序交互的最简便的方法。
标签控件的主要功能是输出信息,可以用来标识其他无法显示标题的控件。
文本框控件用于数据的输入与输出,文本框中的文本在程序运行时,可以被用户编辑。
8单选按钮与复选框控件各有什么作用?
RadioButton控件即单选按钮,提供由两个或两个以上互斥选项组成的选项集。
它支持勾选和不勾选两种状态,在文字前用一个可以勾选的圆点来表示,用户只能在一组选项中选择一项。
CheckBox控件即复选框控件,通常用来设置选项,用户可以一次选择任意数量的复选框。
9实际应用中,菜单分为哪两种形式?
C#中设计主菜单使用哪种控件?
实际应用中,菜单分为主菜单和弹出式菜单(上下文菜单)。
通常使用MenuStrip控件实现主菜单设计。
10简述已连接环境与非连接环境的区别与优缺点。
已连接环境是指应用程序和数据库之间保持连续的通信,优点是能及时刷新数据库,安全性较高,缺点是需要固定的数据库连接,不宜多个用户共同使用同一个数据库,扩展性差。
非连接环境是指应用程序能够在与数据库断开的情况下进行操作,优点是应用程序可以随时连接到数据库获取相应的信息,缺点是获得的数据可能不是最新的,并且对数据更改时可能引发冲突,因为在某一时刻可能有多个用户同时对统一数据操作。
11何谓数据绑定技术?
所谓数据绑定技术就是把已经打开的数据集中某个或者字段绑定到组件的某些属性上的一种技术,就是把已经打开的数据的某个或者某些字段绑定到TextBox、ListBox、ComboBox等组件能够显示数据的属性上,当对组件完场数据绑定后,其显示字段的内容将随着数据记录指针的变化而变化。
12事件是一种委托吗?
为什么?
事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托。
13列举ADO.NET中的五个主要对象,并简单描述
Connection连接对象,Command执行命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,支持增删查询,DataSet数据级对象,相当于内存里的一张或多张表。
14NET中读写数据库需要用到那些类?
他们的作用?
DataSet:
数据存储器;DataCommand:
执行语句命令;DataAdapter:
数据的集合,用于填充。
15DataReader和DataSet的异同
DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作.
16解释virtual、sealed、override和abstract的区别
virtual声明虚方法的关键字,说明该方法可以被重写;sealed说明该类不可被继承;override重写基类的方法;abstract声明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。
17什么叫泛型(generics)?
使用泛型,可以定义使用类型参数定义的类和/或方法。
当客户端代码实例化类型时,会指定一个特定的类型作为参数。
五、计算题
1、定义方法floatave(float[]a)实现求数组的平均值,在主函数中使用委托调用该方法,求数组(23,45,12,67.8,12.3)的平均值。
publicstaticfloatave(float[]a)
{
floatsum=0;
foreach(floatnina)
sum=sum+n;
returnsum/a.Length;
}
publicdelegatefloatF(float[]a);
staticvoidMain(string[]args)
{
float[]a1=newfloat[]{23,45,12,67.8F,12.3F};
Ff=newF(ave);
Console.WriteLine("数组平均值:
{0}",f(a1));
Console.ReadKey();
}
2、List集合的使用
ListlistEmail=newList();
staticstringqueryDomain;
privatevoidForm1_Load(objectsender,EventArgse){
listEmail.Add("zhangsan@");
listEmail.Add("lisi@");
listEmail.Add("wangwu1@");
listEmail.Add("liuying@");
listEmail.Add("magling@");
listEmail.Add("wangping@");
listEmail.Add("liming@");
foreach(stringstrinlistEmail)
lstResult.Items.Add(str);
}
3、使用Dictionary泛型集合实现学生管理系统
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
publicclassStuInfo
{
privatestringid;
privatestringname;
privatestringclasses;
privatestringtelephone;
publicstringId
{
get{returnid;}
set{id=value;}
}
publicstringName
{
get{returnname;}
set{name=value;}
}
publicstringClasses
{
get{returnclasses;}
set{classes=value;}
}
publicstringTelephone
{
get{returntelephone;}
set{telephone=value;}
}