问题:类成员有几种访问修饰符?
回答:类成员的访问修饰符有:public, private(默认),internal,protected
问题:ADO.Net中常用的对象有哪些?
回答:Connection 数据库连接对象
Command 数据库命令对象
DataReader 数据读取器对象
DataAdapter 数据适配器
DataSet 数据集对象。
问题:类的访问修饰符有那些?
回答:public ,internal(默认的)
问题:类与对象的关系?
回答:类是对象的抽象形式,对象是类的具体表现。
类是抽象的,对象是具体的
问题:面向对象的三大特征?
回答:封装,继承,多态
问题:C#数据类型的分类?
回答:值类型和引用类型
值类型有:基本数据类型,枚举和结构
引用类型有:字符串,数组,类,接口,委托。
问题:构造函数的特点?
回答:与类名相同,没有返回值,在实例化类的对象时由系统自动调用
问题:什么是类?
回答:具有相似属性和方法的对象的集合
问题:什么是对象?
回答:看得见,摸得着的实实在在的事物。
问题:类的成员有哪些?
回答:字段,属性,方法,索引器
有数据成员:(字段和常量)
和方法成员:(方法,属性和索引器)
问题:Sqlcommand中有几个方法,分别是哪些?
回答: 三个方法 ,分别是
ExecuteNonQuery()返回受影响的行数int型;
ExecuteReader()返回SqlDataReader(阅读器)对象;
ExecuteScalar()返回查询结果中首行首列的值,object类型。
问题:解释一下如下的代码?
cboBookType.DataSource = bts.SelectBookType();
cboBookType.DisplayMember = "BookTypeName";
cboBookType.ValueMember = "BookTypeId";
回答: 绑定集合中的数据到下拉列表中,下拉列表显示图书类型的名称,并同时绑定一个隐藏的值图书编号 给下拉列表。
问题:File.Exists(路径)是什么意思?
回答:判断文件是否存在
问题:异常处理关键字的解释?
回答:try:监控可能发生异常的代码,catch:捕获异常并处理异常,Finally:不管是否发生异常都要执行的代码。
问题:for和foreach的区别?
回答: for:是循环,根据下标查找元素,可读可写
foreach:是遍历,只读(自动遍历给定的集合体中的所有值)
问题:如何设置ListView的各种视图的显示?
回答:View属性
------------------------------------------------------------------------------------------------------
一般问题
问题:用sealed修饰的类有什么特点?
回答:密封类,不能被继承。
问题:重载和重写的区别?
回答:重载是在同一个类中方法名相同,参数的个数,顺序,类型不同。
重写是存在继承关系的两个类,子类可以重写父类同名的方法。
问题:什么是装箱和拆箱?
回答:装箱:从值类型转换到引用类型(如:object obj=10;)
拆箱: 从引用类型转换到值类型(如:int a=(int)obj;)
问题:接口是否可以继承接口?
回答:接口可以继承接口
问题:抽象类是否可以继承实体类?
回答:抽象类可以继承实体类,前提是实体类必须有明确的构造函数。
问题:结构和类的区别是什么?
回答:结构是值类型,类是引用类型
结构不支持继承,类有继承
结构只能定义有参的构造函数(或者结构不能定义无参的构造函数);类可以
访问结构的速度比类快。
问题:简述四种类修饰符的访问权限。
回答:private 私有成员,在类的内部访问。
protected 受保护成员,在该类内部和子类中可以访问。
internal 程序集 在同一命名空间里可以访问。
public 公共的 完全公开,没有访问限制。
问题:C#支持多重继承吗?
回答:类不支持多重继承,但通过接口可以变相实现多重继承。
类之间不支持,接口之间支持。类对接口叫实现,不叫继承。
问题:C#提供一个默认的无参构造函数,当实现了有参的构造函数时,还想保留这个无参的构造函数。这时应该写几个构造函数?
回答:两个,一旦实现了一个有参构造函数,C#就不会再提供默认的无参构造函数了。所以需要手动实现那个无参的构造函数。
问题:什么是虚方法?什么是抽象方法?
回答:虚方法:带virtual关键字,有方法实现,子类中可以重写也可以不重写父类的方法。
抽象方法:带abstract关键字,没有方法实现,子类必须重写父类的抽象方法。
问题:静态成员和非静态成员的区别?
回答:
静态成员以 类名.成员名 的形式调用
非静态成员以 对象名.成员名 的形式调用
1)静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问。2)不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问。
3)一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。
4)静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。
问题:抽象类和抽象方法的特点?
回答:含有抽象方法的类是抽象类。
用abatract修饰的方法是抽象方法,抽象方法没有方法实现,实现过程要在子类中重写。
问题:C#实现多态的方式有那些?
回答:虚方法和抽象类
问题:抽象类的特点?
回答:
不能实例化,用abstract修饰。
1) 抽象类(abstract)是用来产生子类的,不能被实例化的
2) 所有的抽象方法(abstract)都必须在抽象类中
3) 每一个抽象类的抽象方法,都要在它的子类中进行方法重载,才能用
4) 一个抽象类中有许多抽象方法,它的子类如果没有实现其所有的抽象方法则,它的子类还是抽象类,不能被实例
5) 抽象类中允许存在非抽象方法,非抽象方法可以被子类访问
问题:解释装箱和拆箱操作?
回答:装箱 是由 值类型到引用类型的转换,由系统自动完成
拆箱 是由 引用类型到值类型的转换,需要强制转换。
问题:什么是枚举以及使用枚举的限制条件?
回答:枚举是一种独特的值类型,用于定义一组常量。使用枚举有如下限制条件:
1) 不能定义自己的方法,
2) 不能实现接口
3) 不能定义属性或索引。
问题:什么是显式实现接口?
回答:一个类可以实现多个接口,但实现的接口中有同名的方法时,这时就需要显式的实现接口。
问题:简述C#中抽象类和接口的区别?
回答:抽象类用abstract定义,只能继承一个类,非抽象子类必须实现所有抽象方法,用override重写。
接口用interface定义,可以实现多个接口,实现接口的类必须实现该接口的所有成员,直接实现。
问题:集合所在的命名空间
回答:System.Collections
问题:什么是泛型?
回答:将数据类型参数化的一种技术,C#2.0引入的
类型安全,不需要装箱和拆箱操作
问题:什么是接口?
回答:接口是一套标准或规则。
问题:程序中的错误有哪些种类?
回答:语法错误,逻辑错误,运行时的错误(异常)
问题:什么是异常和异常处理?
回答:程序运行时的错误叫异常,对运行时的错误的处理就叫异常处理。
问题:属性的作用和分类?
回答:属性分只读,只写,和读写属性
属性封装字段,简单验证。
问题:如何编写一个自定义的异常类?
回答:定义一个类,然后继承Exception异常父类
问题:解释out,ref,params关键词的用法。
回答:out 输出参数
ref 引用参数
params 数组型参数
问题:TreeView中的图书类型的绑定(每个步骤要讲清楚)
回答:具体代码具体讲解
1、 TreeNode tnG=new TreeNode(“所有图书”);实例化根节点。
2、 循环遍历泛型中的值并实例化子节点TreeNode tnType=new TreeNode(bt.BookTypeName)
3、 把类型编号设成每个节点的隐藏值
4、 把类型节点添加到根节点上面
5、 把根节点添加到TreeView上
6、 tvwBookType.ExpandAll()展开所有节点
7、 tvwBookType.SelectedNode=tnG 让根节点默认被选中
问题:String.IsNullOrEmpty()是什么意思?
回答:NULL 代表不存在;Empty代表存在,但里面没有内容。
问题:foreach(DataRow dr in ds.Tables[0].Rows) DataRow表示什么?
回答:DataRow表示行,
foreach中主要是取出每行特定单元格的值,再赋值给实体对象的属性。
问题:ListView中的图书信息绑定?
回答:具体代码具体讲解
1、 循环绑定ListView中的每列的值
2、ListView lvi=new ListView(bi.BookName);实例化一个行的对象
3、lvi.subItems.Add(bi.属性);为行中的其他列添加值
4、lvwBook.items.Add(lvi);把行添加到ListView中
问题:Application.StartupPath是什么意思?
回答:得到程序集的根目录,就是程序生成可执行的exe文件所在的目录
问题:Image.FromFile返回的是一个什么类型?
回答:读取图片文件的路径,返回图片Image类型。
问题:写在路径字符串前面的@符号有什么作用?
回答:把\这种转义字符转换成普通字符。
问题:如何得到TreeView中被选择的节点?TreeView中通过什么属性得到节点的深度?如何得到ListView中选择的项?如何设置ListView选中整行?
回答:得到TreeView中选中的节点:tvwBookType.selectedNode
得到节点深度:Level属性
得到ListView中选中的项:lvwBook.SelectedItems[0]
(因为得到的一个集合所以通过下标得到第一项)
LListView选中整行:把FullRowSelect属性设为true
问题: 如何清空ImageList中的图片?如何清空TreeView的节点?如何清空ListView中的所有值?
回答:图片: imgLst.imges.Clear();
TreeView:tvw.Nodes.Clear();
Listview:lvw.items.Clear();
问题:什么是方法的重写?什么是方法的重载?
回答:重写是子类继承父类,子类将父类的虚方法或者抽象方法重新实现的过程。
重载是在同一个类中,方法名相同参数个数、顺序、类型不同的现象;重载与方法的返回值类型无关。
问题:讲解如何实现图书删除
回答:具体代码具体讲解
通过Lisviewitem的Tag值得到要删除的图书编号,调用BLL层中的删除图书的方法
问题:讲解如何实现图书类型的删除
回答:具体代码具体讲解
通过数的节点得到要删除的类型编号,先判断该类型中是否存在图书再对图书进行删除( 一定要把主外建关系的原因不能删除或者做的级联删除这点要说清楚)
问题:为什么要把TveeView的根节点的Tag值设为0
回答:具体代码具体讲解
如果用户选中了根节点要查询所有图书信息,其他节点则是查询该类型的图书信息,要用这个tag值作为一个条件判断,所以设tag值为0
问题:讲解如何点了浏览以后把图片显示在图片框中
回答:先用OpenFileDialog打开对象浏览器,选中图片以后点了确定后把OpenFileDialog的FileName属性(得到选中文件的绝对路径)的值赋给图片框,picConverImage.Image=Image.FromFile(ofd.FileName);
问题:解释as和is的作用
回答:Is:检查对象是否与指定类型兼容
As:用于在兼容的引用类型之间执行转换
Is 判断是否是某种类型; as 将对象转换为某种类型
问题: #region和#endregion是什么意思?
回答:指定可展开或折叠的代码块
---------------------------------------------------------------------------------------------------------------
较难问题
问题:CTS、CLS、CLR分别作何解释?
回答:CTS:通用语言系统;CLS:通用语言规范;CLR:公共语言运行时。
CTS和CLS保证了.net的跨语言特性,CLR是.net程序的运行平台。
问题:抽象类是否可以实现(implement)接口?
回答:抽象类可以实现(implement)接口
问题:在C#中using和new这两个关键字有什么意义,请说出你所知道的意义?
回答:
using 引人命名空间或者释放使用非托管资源的对象;
new 新建对象(实例)或者隐藏父类的方法。
问题: Exception是什么类?
回答:Exception 异常父类
问题:构造函数是否可以被重写?
回答:构造函数不能被继承,因此就不能重写。
问题:String类可以被继承吗?
回答:String类是sealed类,所以不可以继承。
问题:C#中索引器是否只能根据数字进行索引?
回答:不是。可以用任意类型,但一般使用int和string。
问题:This关键字的含义?
回答:指代当前类的实例(对象)
问题:什么是封装?
回答: 自由发挥
封装是面向对象的特征之一。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
问题:什么是继承?
回答:模拟现实生活人类的继承关系,类也是如此。
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”或“派生类”。
被继承的类称为“基类”、“父类”或“超类”。
问题:什么是多态?
回答:不同对象对同一动作的不同反应。
问题:Abstract的意思?
回答:抽象的,有抽象类和抽象方法
1) abstract+方法=抽象方法
2) abstract+类=抽象类,不能被实例化
问题:Readonly 和 const定义常量的区别?
回答:
1)const只能在该字段的声明中初始化,readonly可以在声明或构造函数中初始化。
2)const字段为编译时常量,而readonly为运行时常量。
3)const字段总是静态的,而readonly字段可以是静态的也可以是非静态的。
问题:imgLst.Images.Add(bi.ConverImage,路径)为什么要这么写?
回答:具体代码具体讲解
bi.ConverImage是为了设置图片key值,为了后面能够通过key值来取出图片,后面的参数是图片所在的路径
问题:三层的依赖关系
回答:数据访问层:依赖实体层
业务逻辑层:依赖实体层和数据访问层
表示层:依赖实体层和业务逻辑层
问题:修改时如何做的窗体间的传值?
回答:具体问题具体讲解
用的是构造方法传参的方式(详细略)
问题:解释Abstract、interface、enum
回答:Abstract:抽象,用Abstract修饰的对象不能有实现,如果用Abstract修饰类,那么继承该类的非抽象类必须实现该类中Abstract修饰的方法属性等。
Interface:接口,接口中的所有对象都不能有实现,一个类可以实现多个接口
Enum:枚举,一组有限的常量值