c#面试宝典一:
A题:
http://blog.sina.com.cn/s/blog_939f768f0102wix6.html
在using ()中新建的对象,比如你这里的conn,会在{}结束的时候自动关闭和释放,不需要你手动进行。
这样你不用每次都要去调用conn.Close(),或者conn.Dispose()了,这样能减少人为引入Bug的机会。
using System;
不是必须的,是引入命名空间。例如在System里的Console下有函数WriteLine:
在不加 using System时候必须输入:System.Console.WriteLine("Please enter your name:");
但是在开头加了的话 就直接 Console.WriteLine("Please enter your name:"); 就可以了。注意省略了 System.
所以它不是必须的,但是如果许多地方都要用System空间里的东西,最好加上。
B题:
https://www.cnblogs.com/bobositlife/articles/what-is-orm-why-use-orm.html
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
优/缺点
优点
与传统的数据库访问技术相比,ORM有以下优点:
- 开发效率更高
- 数据访问更抽象、轻便
- 支持面向对象封装
缺点
- 降低程序的执行效率
- 思维固定化
C题:@表示强制不转译
这个@符号有几个作用,1.假设str是一个路径名称的话,在我们的路径中通常都有“\”符号,而这个符号又是一个转义字符,如果不加@符号的话,那么你不得不把路径中的“\”进行处理,但是这样造成工作量大,所以使用这个@符号就不需要转义路径中的特殊字符了。意思是""之间的反斜杠、正斜杠什么的不做特殊处理,只表示一个你看到的字符串。
D题:
https://zhidao.baidu.com/question/374859562.html
委托是对函数的封装,可以当作给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。
最常见的例子就是Tom猫叫“喵,我是TOM”,有两只老鼠Jerry和Jack就说“猫来了,快跑!"
你分析一下,这两个类是如何执行?
在Main函数中执行,当Cat的Shout触发时,Mouse就执行Run。那么如何让Shout触发?显然老猫不认识老鼠,也不会主动通知它们。
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。
委托通过delegate来声明。而事件是说在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。事件对象用event声明。
E题:
PO持久化对象中用integer而不要使用int
/*
* int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,
* 而Integer的默认值为null
* ,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别
* ,则只能使用Integer
* 。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时
* ,结果为0,所以,int不适合作为web层的表单数据的类型。
* 在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的
* ,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。
* 另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。
F题:
接口的方法只能声明不能定义;类可以(所以接口里面的方法不能为abstrat或者virtual;类可以)。类:接口---实现接口;类:类---继承类;接口:接口---继承接口。一个类可以实现多个接口;一个类只能继承一个类。
都是引用类型.
接口实质上是功能说明书,说明有什么属性和功能(属性和方法)
接口理论上是继承者的父类,因此它可以作为实现类的引用,来封装类的复杂实现。
用接口引用 指向 new 的实例,则该引用只呈现接口中约定的属性和方法(封装)
接口可以理解为是纯抽象的类。它与类的关系好比自动洗衣机的说明书 和自动洗衣机的关系。
说明书里描述了自动加水、自动洗衣、自动脱水等功能方法,也有环保、节能、省水等特(属性)。
但是你不能用这个说明书来洗衣服吧?
G题:
private是完全私有的,只有在类自己里面可以调用,在类的外部和子类都不能调用,子类也不能继承父类的private的属性和方法。
protected虽然可以被外界看到,但外界却不能调用,只有自己及自己的子类可以调用(protected的属性和方法都可以被子类所继承和调用)。
private和protected的共同点:外部都不可以访问。
private和protected的不同点:在同一类中可视为一样,但在继承中就不同了,private在派生类中不可以被访问,而protected可以。
public对任何类和成员都完全公开,无限制访问。
internal同一应用程序集内部(在VS.NET中的一个项目中,这里的项目是指单独的项目,而不是整个解决方案)可以访问。
public和internal的区别:public的成员可以跨程序集,但internal不能,同一程序集中具有相同的效果。
protected internal:只能在同一应用程序集内本类、派生类访问。