C#面试学习期未考试基础练习题带答案100题第4套文档格式.docx
《C#面试学习期未考试基础练习题带答案100题第4套文档格式.docx》由会员分享,可在线阅读,更多相关《C#面试学习期未考试基础练习题带答案100题第4套文档格式.docx(63页珍藏版)》请在冰点文库上搜索。
C)设置HelpButton为true,MinimizeBox为false
D)设置HelpButton为true,MaximizeBox为false,MinimizeBox为false
5.假定一个10行20列的二维整型数组,下列哪个定义语句是正确的()。
A)int[]arr=newint[10,20]
B)int[]arr=intnew[10,20]
C)int[,]arr=newint[10,20]
D)int[,]arr=newint[20;
10]
newint[10,20],前面是行,后面是列。
6.在WinForm窗体中,放置了一个PictureBox控件PictureBox1,在设置PictureBox1控件的Image属性后,当图片与控件的大小不一致时,可以通过如下代码()使PictureBox1控件的大小与图片大小保持一致。
(选择一项)
A)this.PictureBox1.SizeMode=PictureBoxSizeMode.AutoSize;
B)this.PictureBox1.SizeMode=PictureBoxSizeMode.Normal;
C)this.PictureBox1.SizeMode=PictureBoxSizeMode.StretchImage;
D)this.PictureBox1.SizeMode=PictureBoxSizeMode.CenterImage;
A
7.枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类型,如果类型省略,则定义为()。
A)uint
B)sbyte
C)ulong
D)int
8.设计窗口,可以通过()属性向列表框控件如ListBox的列表添加项。
A)Items
B)Items.Count
C)Text
D)SelectedIndex
9.值类型变量不包含下列()
A)整数类型
B)浮点类型
C)引用类型
D)浮点类型
C#的值类型包括:
结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。
C#的引用类型包括:
数组,用户定义的类、接口、委托,object,字符串。
数组的元素,不管是引用类型还是值类型,都存储在托管堆上。
引用类型在栈中存储一个引用,其实际的存储位置位于托管堆。
为了方便,本文简称引用类型部署在托管推上。
值类型总是分配在它声明的地方:
作为字段时,跟随其所属的变量(实例)存储;
作为局部变量时,存储在栈上。
值类型在内存管理方面具有更好的效率,并且不支持多态,适合用作存储数据的载体;
引用类型支持多态,适合用于定义应用程序的行为。
10.在.NET中,()类提供了操作字符串的方法。
A)System.Threading
B)System.IO
C)System.Collections
D)System.String
11.看代码回答问题
建表如下:
createtablestuInfo
(
stuIdintnotnull,
stuNamevarchar(30)notnull,
stuAddressvarchar(30),
)
看下面C#代码填空,要读取表中的第一列数据(已知sqlCmd为SqlCommand对象,sqlReader为SqlDataReader对象):
While(sqlReader.________)
{
Console.writeLine(sqlReader._________);
}选择()
A)Read()GetInt(0)
B)Next()GetValue(0)
C)Read()GetValue
(1)
D)Read()GetValue(0)
DataReader对象提供了顺序的,只读的方式读取Command对象获得的数据结果集。
正是因为DataReader是以顺序的方式连续地读取数据,所以DataReader会以独占的方式打开数据库连接。
由于DataReader只执行读操作,并且每次只在内存缓冲区里存储结果集的一条数据,所以使用Datareader对象的效率比较高,如果要查询大量数据,同事不需要随机访问和修改数据,DataReader是优先的选择。
DataReader对象有许多的属性和方法:
12.以下哪些功能不属于C#2.0新增的特性()
A)继承和多态
B)泛型
C)可空类型
D)遍历器
继承和多态是面向对象的基本特征,不是新特性。
13.C#中声明一个命名空间的关键字是()。
A)namespace
B)nameplace
C)this
D)as
namespace定义命名空间。
14.()关键字可以用来访问当前对象的基类对象。
A)object
B)this
C)as
D)base
使用base.调用父类里面的属性
publicclassparent
{
publicstringa;
}
publicclasschild:
parent
publicstringgetparent()
returnbase.a;
}
15.分析下列C#语句,注意类MyClass没有访问修饰符:
namespaceClassLibrary1{
classMyClass{
publicclasssubClass{
inti;
}}}
若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不变,则应选择
________。
A)private
B)protected
C)internal
D)public
16.在C#中执行以下代码结果是()。
ArrayListlist=newArrayList();
list.Add
(1);
1
list.Add(“2”);
list.Add(“3”);
list.RemoveAt(0);
2
list.RemoveAt
(1);
list.RemoveAt
(2);
3
A)正确执行
B)代码行1运行出错
C)代码行2运行出错
D)代码行3运行出错
第3行出错。
因为前面已经移出两个,list.RemoveAt
(2);
超出范围。
17.若将数据集中所作更改更新回数据库,应调用SqlAdapter的()方法。
A)Update
B)Close
C)Fill
D)Open
SqlDataAdapter概述
SqlDataAdapter是DataSet和SQLServer之间的桥接器,用于检索和保存数据。
SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射Fill(它可更改DataSet中的数据以匹配数据源中的数据)和Update(它可更改数据源中的数据以匹配DataSet中的数据)来提供这一桥接。
当SqlDataAdapter填充DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。
)我们可以通过以下三种方法来创建SqlDataAdapter对象:
使用方法
1、通过连接字符串和查询语句
[csharp]viewplaincopy
在CODE上查看代码片派生到我的代码片
stringstrConn="
uid=账号;
pwd=密码;
database=数据库;
server=服务器"
;
//SQLServer链接字符串
strSql="
SELECT*FROM表名"
SqlDataAdapterda=newSqlDataAdapter(strSql,strConn);
DataSetds=newDataSet();
//创建DataSet实例
da.Fill(ds,"
自定义虚拟表名"
);
//使用DataAdapter的Fill方法(填充),调用SELECT命令
这种方法有一个潜在的缺陷。
假设应用程序中需要多个SqlDataAdapter对象,用这种方式来创建的话,会导致创建每个SqlDataAdapter时,都同时创建一个新的SqlConnection对象,方法二可以解决这个问题
2、通过查询语句和SqlConnection对象来创建
SqlConnectionconn=newSqlConnection(strConn);
stringstrSql="
SqlDataAdapterda=newSqlDataAdapter(strSql,conn);
3、通过SqlCommand对象来创建
SqlConnectionconnSql=newSqlConnection(strConn);
//Sql链接类的实例化
connSql.Open();
//打开数据库
//使用SqlDataAdapter时没有必要从Connection.open()打开,
//SqlDataAdapter会自动打开关闭它。
stringstrSql="
//要执行的SQL语句
SqlCommandcmd=newSqlCommand(strSql,connsql);
SqlDataAdapterda=newSqlDataAdapter(cmd);
//创建DataAdapter数据适配器实例
ConnSql.Close();
//关闭数据库
SqlDataAdapterda=newSqlDataAdapter(strSQL,ConnSql);
//创建DataAdapter数据适配器实例DataSetds=newDataSet();
//创建DataSet实例da.Fill(ds,"
//使用DataAdapter的Fill方法(填充),调用SELECT命令ConnSql.Close();
//关闭数据库
注意
如果只需要执行SQL语句或SP,就没必要用到DataAdapter,直接用SqlCommand的Execute系列方法就可以了。
sqlDataadapter的作用是实现Dataset和DB之间的桥梁:
比如将对DataSet的修改更新到数据库。
SqlDataAdapter的UpdateCommand的执行机制是:
当调用SqlDataAdapter.Update()时,检查DataSet中的所有行,然后对每一个修改过的Row执行SqlDataAdapter.UpdateCommand,也就是说如果未修改DataSet中的数据,SqlDataAdapter.UpdateCommand不会执行。
使用要点
1、SqlDataAdapter内部通过SqlDataReader获取数据,而默认情况下SqlDataReader不能获知其查询语句对应的数据库表名,
所以下面的代码:
stringstrConn="
SqlDataAdapterda=newSqlDataAdapter(strSql,strConn);
DataSetds=newDataSet();
da.Fill(ds);
会在DataSet中创建一个新的DataTable,这个新的DataTable会拥有名为CustomerID和CompanyName列,但是DataTable对象的名称是Table,而不是我们希望的Customers。
这个问题,可以通过添加TableMapping来解决:
SqlDataAdapterda=newSqlDataAdapter(strSQL,strConn);
da.TableMappings.Add("
Table"
,"
Customers"
//设置对象名称
其实最简洁的方法是通过使用Fill方法的重载,通过指定DataTable,像这样:
SqlDataAdapter.Fill(DataSet,"
MyTableName"
这样就可以不必使用TableMappings集合。
2、在使用Fill方式时,可以指定DataTable,而不是DataSet:
SqlDataAdapterda=newSqlDataAdapter(strSql,strConn);
DataTabletbl=newDataTable();
da.Fill(tbl);
3、注意打开和关闭连接的处理
在调用SqlCommand对象执行sql命令之前,需要保证与该对象关联的SqlConnection对象时打开的,否则SqlCommand的方法执行时将引发一个异常,但是我们在上面的代码中看到,SqlDataAdapter没有这样的要求。
如果调用SqlDataAdapter的Fill方法,并且其SelectCommand属性的SqlConnection是关闭状态,则SqlDataAdapter会自动打开它,然后提交查询,获取结果,最后关闭连接。
如果在调用Fill方法前,SqlConnection是打开的,则查询执行完毕后,SqlConnection还将是打开的,也就是说SqlDataAdapter会保证SqlConnection的状态恢复到原来的情形。
这有时会导致性能问题,需要注意,例如下面的代码:
SqlConnectionconn=newSqlConnection(strConn);
SqlDataAdapterdaCustomers,daOrders;
SELECT*FROMCustomers"
daCustomers=newSqlDataAdapter(strSql,conn);
SELECT*FROMOrders"
daOrders=newSqlDataAdapter(strSql,conn);
daCustomers.Fill(ds,"
daOrders.Fill(ds,"
Orders"
以上代码会导致连接被打开和关闭两次,在调用Fill方法时各一次。
为了避免打开和关闭SqlConnection对象,在调用SqlDataAdapter对象的Fill方法之前,我们可以先打开SqlConnection对象,如果希望之后关闭连接,我们可以再调用Close方法,就像这样:
cn.Open();
cn.Close();
4、多次调用Fill方法需要注意数据重复和有效更新数据的问题
strSql="
SqlDataAdapterda=newSqlDataAdapter(strSql,strConn);
DataSetds=newDataSet();
da.Fill(ds,"
//…….
18.关于base关键字,下列使用方法错误的是()。
A)在子类中,base可以调用父类的构造函数
B)在子类中,base关键字可以访问父类的公共属性
C)在子类中,base关键字不可以调用父类的protected成员
D)在子类中,base关键字不可以调用父类的private成员
protected子类可以调用。
19.以下数据类型不能表示负数范围的是()
A)sbyte
B)decimal
C)double
D)uint
20.以下数据类型中不可以使用算术运算的是()
A)bool
B)char
C)decimal
D)sbyte
bool只有逻辑计算,不能算述运算。
21.假定一个10行20列的二维整型数组,下列哪个定义语句是正确的()。
C)int[,]arr=newint[10,20]
int[,]arr=newint[10,20]定义二维数组
22.关于C#中的switchcase语句,以下说法正确的是()
A)switch判断的表达式可以是整型或者字符型,但不能是字符串型
B)在该语句中最多不能超过5个case子句
C)在该语句中只能有一个default子句
D)在该句中只能有一个break语句
switch可以有多个break.但是default只能一个。
23.若将数据库中的数据填充到数据集,应调用SqlDataAdapter的()方法。
A)Open
D)Update
假设应用程序中需要多个SqlDataAdapter对象,用这种方式来创建的话,会导致创建每个SqlDataAdapt