趁着在放假时候,给大家总结一点笔试面试上的东西,也刚好为年后跳槽做一点小积累。
下面的参考解答只是帮助大家理解,不用背,面试题、笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补缺用的,真正的把这些题搞懂了,才能“以不变应万变”。回答问题的时候能联系做过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了。
private: 私有成员,在类的内部才可以访问。
protected :保护成员,该类内部和继承类中可以访问。
public :公共成员,完全公开,没有访问限制。
internal:当前程序集内可以访问。
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的指针。
委托和事件没有可比性,因为委托是类型,事件是对象。下面说的是委托的对象(用委托方法实现的事件)和(标准的event方式实现)的事件区别。事件的内部是用委托实现。因为对于事件来讲,外部只能"注册自己+= 、注销自己-=",外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用delegate就没法进行上面控制,因此诞生事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List 。事件只能add、remove自己,不能赋值。事件只能+=,-=,不能=.加分的补充回答:事件内部就是一个private 的委托和add ,remove两个方法。
重载是的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。重载(overload)是面向过程的概念。
Override 是进行基类中函数的重写。Override是面向对象的概念
什么是装箱(boxing) 和拆箱(unboxing)
object 是引用类型,但时它的子类Int32 竟然不能去object 能去的"要求必须是引用类型"的地方,违反了继承的原则,所以需要间Int32装在object 才能传递。
装箱:从值类型接口转换到引用类型。
拆箱:从引用类型转换到值类型。
1 object obj = null;//引用类型 2 obj = 1;//装箱,boxing。把值类型包装为引用类型。 3 int i1 = (int)obj;//拆箱。unboxing
分析: 在inboxing (装箱)时是不需要显式的类型转换的,不过unboxing(拆箱)需要显式的类型转换。要掌握装拆箱,就必须了解CTS及它的特点
.Net 重要技术和基础之一的CTS (Common Type System) ,CTS是为了实现在应用程序声明和使用这些类型时必须遵循的规则而存在的通用类型系统。
.Net将整个系统的类型分成两大类 :值类型和引用类型。
CTS中的所有东西都是对象;所有的对象都源自一个基类——System.Object类型。值类型的一个最大的特点是它们不能为null,值类型的变量总有一个值。为了解决值类型不可以为null,引用类型可以为null的问题,微软在.Net中引入了装箱和拆箱:装箱就是将值类型用引用类型包装起来转换为引用类型;而从引用类型中拿到被包装的值类型数据进行拆箱。
(*)object.ReferenceEquals();//用来判断两个对象是否是同一个对象
Console.WriteLine(object.ReferenceEquals(3,3));//因为两个3被装到了两个箱子中,所以是false
Equals ==的关系
原文:https://www.cnblogs.com/wktang/p/10355910.html