?.NET笔试大全
[.NET(C#)]
把attribute翻译成特性,用来标识类,方法
把property翻译为属性,性质,用于存取类的字段
把markup翻译成标记,tag还是翻译成标签比较好
[.NET(C#)]
.NET Framework的核心是其运行库的执行环境。
称为公共语言运行库(CLR)或.NET运行库.
通常将在CLR的控制下运行的代码称为托管代码(managed code).
在CLR执行开发的
源代码之前,需要编译它们为中间语言(IL),CLR再把IL编译为平台专用的代码。
程序集(assembly)是包含编译好的,面向.NET Framework的代码的逻辑单元.
可执行代码和库代码使用相同的程序集结构.
程序集的一个重要特性是它们包含的元数据描述了对应代码中定义的类型和方法.
[.NET(C#)]
ASP页面有时显示比较慢,因为服务器端代码是解释性的不是编译的.
由于ASP代码不是结构化的所以难于维护,加上ASP不支持错误处理和语法检查。
而ASP.NET页面是结构化的。每个页面都是一个继承了.NET类System.Web.UI.Page的类。
另外ASP.NET的后台编码功能允许进一步采用结构化的方式.
页面请求是和WEB服务器在编译后高速缓存ASP.NET页面。
[.NET(C#)]
覆盖(override)和重载(overload):
覆盖是指子类重新定义父类的虚函数的做法。
重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
其实,重载的概念并不属于“面向对象编程”,
重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰
然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。
如,有两个同名函数:function func(p:integer):integer; 和function func(p:string):integer;。
那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。
对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。
也就是说,它们的地址在编译期就绑定了(早绑定),
因此,重载和多态无关!真正和多态相关的是“覆盖”。
当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,
这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。
因此,这样的函数地址是在运行期绑定的(晚邦定)。
结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!
[.NET(C#)]
C#中ref和out的区别:
方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。
当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
当希望方法返
回多个值时,声明 out 方法非常有用。
使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。
若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。
不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。
属性不是变量,不能作为 out 参数传递。
方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变量。
当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。
ref 参数的值被传递到 ref 参数。 传递到 ref 参数的参数必须最先初始化。
将此方法与 out 参数相比,后者的参数在传递到 out 参数之前不必显式初始化。
属性不是变量,不能作为 ref 参数传递。
两者都是按地址传递的,使用后都将改变原来的数值。
ref可以把参数的数值传递进函数,但是out是要把参数清空
就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。
两个的区别:ref是有