常见基础知识点总结(C#)

一、是否使用过委托以及何时使用委托?
委托是将方法作为参数进行传递,将一个方法带入另一个方法,相当于指向函数的指针。
委托是给调用者使用,在调用者不知道何时使用的情况下会使用委托(但是调用者要提前订阅自己的代码),当委托对象接收到订阅者的触发消息后会通知调用者。

二、是否使用过匿名委托和lambda表达式?
采用匿名方法实例化的委托称为匿名委托。
lambda表达式本质上是改进的匿名委托。

三、使用多线程时应注意什么?
1.字线程不能直接对主线程的UI控件进行更改,可以对主线程中的自定义对象进行调用。
2.多线程同时访问一个资源时,需要注意同步,可以采用互斥加锁、阻塞(Sleep)以及join进行同步操作。
线程同步的三种方式:阻塞(Sleep)、join以及互斥操作;使用信号量控制,可以采用AutoResetEvent 和ManualResetEvent初始化信号量,调用set和reset方法改变信号量的状态,调用waitone方法让线程进行阻塞。

四、C#和.NET的区别。
.NET一般指.NET FrameWork框架,它是一种平台和一种技术。
C#是一种高级编程语言,可以基于.NET的应用。

五、C#中的委托是什么?事件是不是一种委托?
C#中的委托是将一个方法作为参数带入另一个方法,可以将委托理解为指向一个函数的引用。
事件是一种委托,是一种特殊的委托。

六、CTS、CLS、CLR分别作何解释?
CTS:通用语言系统;
CLS:通用语言规范;
CLR:公共语言运行库。

七、什么是装箱和拆箱?
装箱:将值类型转换为引用类型;
拆箱:将引用类型转换为值类型。

八、什么是受管制的代码?
unsafe:非托管代码,不经过CLR运行。

九、什么是强类型系统?
RTTI(类型识别系统)。

十、.NET中读写数据库需要用到那些类?它们的作用?
DataCommand:执行语句命令;
DataSet:数据存储器;
DataAdapter:数据的集合,用语填充。

十一、C#中,string qtr = null 和string qtr = ""的区别?
qtr=null是不给其分配内存空间;
qtr=""给它分配长度为空字符串的内存空间。

十二、.NET中class与struct的异同?
class可以被实例化,属于引用类型,分配在内存堆上;
struct属于值类型,分配在内存栈上。

十三、.NET下remoting和webservice两项技术的理解。
remoting可以利用TCP/IP,二进制传送提高效率;
webservice主要是可以利用HTTP,穿透防火墙。

十四、能用foreach遍历访问的对象需要实现什么接口或者声明方法?
实现接口:IEnumerable ;
声明方法: GetEnumerator。

十五、GC是什么?为什么需要GC?
GC是垃圾回收器。程序员不需要担心内存管理,垃圾收集器会自动对内存进行管理。
请求垃圾收集器,可以调用如下的方法之一:

System.gc()
Runtime.getRuntime().gc()

十六、String str = new String(“QML”)创建了几个String Object?
创建了两个对象。一个对象为"QML",另一个为指向"QML"的引用对象str。

十七、启动一个线程是使用run()还是start()?
启动一个线程是使用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行,这并不意味着线程会立即运行。
run()方法可以产生必须退出的标志来停止一个线程。

十八、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
接口可以继承接口;
抽象类能够实现接口;
当所继承的实体类中有明确的构造函数时,抽象类可以继承实体类。

十九、构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能被重写,但是可以被重载。

二十、是否可以继承String类?
String类属于final,因此不能被继承(C#中sealed所修饰的类也不能被继承)。

二十一、try{}里面有一个return语句,那么紧跟在这个try后面的finally{}语句是否会执行?若执行,什么时候执行,是在return之前?还是之后?
紧跟在try后面的finally{}语句会被执行,是在return之前被执行。

二十二、两个对象值相同(a.equals(b)==true),但却有不同的hash code,这句话是否正确?
这句话不正确,它们有相同的hash code。

二十三、switch是否能作用在byte上?是否能作用在long上?是否能作用在String上?
switch(exp)中的exp为一个整数表达式。因此传递给swicth和case语句的参数应该是int、short、char、byte;long和String都不能作用于switch。

二十四、abstract的method是否可同时是static?是否可同时是native?是否可同时是synchronized?
都不能。

二十五、List、Set和Map是否都是继承与Collection接口?
List和Set是继承与Collection接口;Map不是继承与Collection接口。

二十六、Set里的元素是不能重复的,那么是用什么方法来区分重复?是用==区分?还是使用equals()来区分?它们有什么区别?
Set里的元素是不能进行重复的,使用iterator方法来区分重复。
equals()是判断两个Set是否相等。
equals()和双等是决定引用值是否指向同一对象;equals方法在类中被覆盖,当两个分离对象的内容和类型相匹配时,返回真值。

二十七、数组中是否有Length()方法?String类中是否有length()方法?
数组中没有Length()方法,有Length属性。
String类中有Length()方法。

二十八、sleep()和wait()方法有什么区别?
sleep()方法是让线程停止一段时间。在sleep时间间隔期满后,线程不一定立即恢复执行。因为在这个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非有:1.“醒来”的线程具有更高级别的优先级;2.正在运行的线程因为其它原因而阻塞。
wait()方法是线程交互时,如果线程对一个同步对象A发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,知道被唤醒或等待时间到。

二十九、short a = 1; a = a + 1;有什么错?short b = 1; b += 1;有什么错?
short a = 1; a = a + 1;有错,因为a是属于short类型,而a + 1是属于整型,不能显示转化为short类型,可修改为a = (short)(a + 1);
short b = 1; b += 1;正确。

三十、重载与重写的区别?
方法的重载是一个类中方法之间的关系,是水平关系。方法的重载是多个方法之间的关系。
方法的重写是父类与子类之间的关系,是垂直关系。重写只能由一个方法或者一对方法产生关系。

三十一、Overloaded方法是否可以改变返回值的类型?
是可以改变返回值的类型。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值