大家好,欢迎来到IT知识分享网。
1、面向对象有几大特征?分别是什么?
面向对象有三个特征。
分别是:封装、继承、多态。
2、什么是多态?列举多态的实现?
多态:不同对象调用相同的方法,可以有不同的解释,产生不同的执行结果,这就是多态。
实现:派生类重载基类中的虚方法来实现。
继承是子类使用了父类的方法,多态是父类使用了子类的方法。
3、简述 private、 protected、 public、 internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 当前程序集内可以访问。
4、ADO.NET中的五个主要对象。
分别为:Connection、Command、DataAdapter、DataSet、DataReader。
1) 、Connection:主要是开启程序和数据库之间的链接。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。(Close和Dispose的区别:Close以后还可以Open;Dispose以后则不能再用)。
2) 、Command:主要可以用来对数据库发出一些指令,例如:对数据库下达查询、新增、修改、删除等数据库指令,以及调用存在数据库中的存储过程等。这个对象是架构在Connection对象上,也就是通过Command对象连接到数据源。
3) 、DataAdapter:主要是在数据源以及DataSet之间执行数据传输的工作,他可以通过Command对象下达命令后,并将取得的数据放入DataSet对象中。DataAdapter对象是架构在Command对象上,并提供了许多配合DataSet使用的功能。
4)、 DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet是放在内存中的。DataSet的能力不只是可以存储多个Table而已,还可以透过DataAdapter对象取得一些例如逐渐等的数据表结构,并可以记录数据表间的关联。DataSet对象可以说是ADO.NET中重量级的对象,DataSet对象架构在DataAdapter对象上,本身不具备数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet对象以及数据源间传输数据的桥梁。DataSet包含若干DataTable、DataTable包含若干DataRow。
5)、 DataReader:当我们只需要循环的读取数据而不需要其他的操作时,就可以使用DataReader对象。DataReader对象只是一次一笔向下循环读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能通过游标读取当前行的数据,而且这些数据是只读的,不允许作其他的操作。因为DataReader在读取数据的时候限制了每次只读取一笔,而且只能是只读,所有使用起来不但节省资源而且效率很好。使用DataReader 对象出了效率较好之外,因为不能把数据全部传回,故可以降低网络的负载。
总:ADO.NET使用Connection 对象来连接数据库,使用Command 或DataAdapter对象来执行SQL语句,并将执行的结果返回给DataReader 或DataAdapter ,然再在使用取得的DataReader 或DataAdapter 对象操作数据结果。
5、列举C#中接口和类的异同?
不同点:
① 接口不能直接实例化。
② 接口强调了必须实现,但没有具体实现的方法。
③ 接口可以多继承,类只能单继承。
④ 类的定义可以在不同的源文件之间进行拆分。
相同点:
① 接口、类、结构都可以从多个接口继承.。
② 接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
③ 接口和类都可以包含事件、索引器、方法、属性(基础知识:接口只能定义方法/行为,不能定义实现也就是字段,因为事件、索引器、属性本质上都是方法,所以接口中也可以定义事件、索引器、属性)。
6、public static const int A = 1;这段代码有错误么?
有错误:A 被声明为常量(const) 就是静态的(static ),不能被修饰为static。
7、C#中所有对象的共同基类是什么?
System.Object
8、C#中的委托是什么?事件是不是一种委托?事件和委托的关系。
委托可以把一个方法作为参数代入另外一个方法,委托可以理解为指向一个函数的指针。
委托和事件没有可比性,因为委托是类型,事件是对象。
事件的内部是用委托实现的。因为对于事件来讲,外部只能‘注册自己+=、注销自己-=’,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List。事件只能add、remove自己,不能赋值。事件只能+=、-=,不能=(委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区别)。
9、值类型和引用类型的区别?
① 将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
② 值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结构也可以实现接口。
③ 值类型不可能包含 null 值:然而,可空类型功能允许将 null 赋给值类型。
④ 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
10、C# Hashtable和HashMap的区别?
首先C#只有Hashtable,Hashtable表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。C#中没有HashMap,而HashMap是Java1.2引进的Map interface的一个实现….
①、Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类。
②、Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:Map Collections.synchronizedMap(Map m)这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
③、在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
面向对象编程篇-02 更新中。。。。。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6744.html