.net面试题目汇总(一)

Abstruct class 与 Interface的区别
相同点:
1)  都不能被初始化;
2)  都支持抽象方法;
不一样点:
1)  abstract class的成员函数容许有函数体,interface不能
2)  abstract class容许有成员变量,interface不能(interface只能含有事件,委托,函数,属性,索引器);
3)  abstract class的方法容许含有可见性修饰符,interface不能(默认为public)
4)  abstract class不能被多重继承,interface能够被多重继承(实现)
5) abstract class 能够拥有构造函数/静态构造函数,interface不能够
 
class 与 Struct的区别
相同点:
1)  它们都是建立对象的模板,用以抽象某类具备通通特征的对象;他们都包含数据和方法;
2)  它们在使用上没有太大的区别,除了关键字class和struct不一样;
不一样点:
1)  Struct是值类型,它在内存中的存储方式是存储于堆(heap)上
2)  Class是引用类型,它在内存中的存储方式是存储于栈(stack)上
 
Ref, Out, Params的区别
params 关键字能够指定在参数数目可变处采用参数的方法参数。在方法声明中的 params 关键字以后不容许任何其余参数,而且在方法声明中只容许一个 params 关键字。
Out
这是一个引用传递L。
原则一:当一个方法(函数)在使用out做为参数时,在方法中(函数)对out参数所作的任何更改都将反映在该变量中。
原则二:当但愿方法返回多个值时,声明 out 方法很是有用。使用 out 参数的方法仍然能够返回一个值。一个方法能够有一个以上的 out 参数。
原则三:若要使用 out 参数,必须将参数做为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。
原则四:没必要初始化做为 out 参数传递的变量,由于out 参数在进入方法(函数)时后清空本身,使本身变成一个干净的参数,也由于这个缘由必须在方法返回以前为 out 参数赋值(只有地址没有值的参数是不能被.net接受的)。
原则五:属性不是变量,不能做为 out 参数传递。
原则六:若是两个方法的声明仅在 out 的使用方面不一样,则会发生重载。不过,没法定义仅在 ref 和 out 方面不一样的重载。
ref仅仅是一个地址!!!
原则一:当一个方法(函数)在使用ref做为参数时,在方法中(函数)对ref参数所作的任何更改都将反映在该变量中。
原则二:调用方法时,在方法中对参数所作的任何更改都将反映在该变量中。 原则三:若要使用 ref 参数,必须将参数做为 ref 参数显式传递到方法。ref 参数的值能够被传递到 ref 参数。 原则四:ref参数传递的变量必须初始化,由于ref参数在进入方法(函数)时后仍是它本身,它这个地址指向的仍是原来的值,也由于这个缘由ref参数也能够在使用它的方法内部不操做。 原则六:若是两种方法的声明仅在它们对 ref 的使用方面不一样,则将出现重载。可是,没法定义仅在 ref 和 out 方面不一样的重载。
相关文章
相关标签/搜索