北京总部

中软国际-.NET入门知识问答

作者: 来源: 时间: 2017-02-27 14:43:13

关于.NET入门知识你知道多少?

1.重载(Overload)和覆写(override)的区别
答:方法重载:当类包含两个名称相同但签名不同(方法名相同,参数列表不相同)的方法时发生方法重载。用方法重载来提供在语义上完成相同而功能不同的方法。
覆写:在类的继承中使用,通过覆写子类方法可以改变父类虚方法的实现。


2.接口与继承的区别?什么时候使用接口,什么时候使用继承?
答:(1)接口定义一个类型需要实现的方法,属性,索引和事件,包括可能的参数类型和返回值类型,而把具体的实现交由相应的类或结构来做,从而为组件提供多态能力。
(2)继承常用于在一个现有父类的基础上的功能扩展,往往是我们将几个类中相同的成员提取出来放在父类中实现,然后在各自的子类中加以继承。
(3)接口可以实现多接口继重,而继承只能实现单继承。
(4)实现继承可继承父类型的实现,由于接口中没有定义方法的实现,因此必须实现继承后该接口的所有方法。
(5)为父类型添加方法可能不影响使用继承自该类型实现的用户,而为接口添加方法导致用户必须为新方法添加实现。
(6)当派生类和基类是is-a的关系是使用"继承",典型案例"苹果is-a水果",存在can-do的关系时使用"接口"


3.ado,ado.net的区别

答:您可以通过将ADO.NET的各项功能与ActiveX数据对象(ADO)的特定功能进行比较来理解ADO.NET的功能。

数据的内存中表示形式

在ADO中,数据的内存中表示形式为记录集。在ADO.NET中,它为数据集。它们之间有重要的差异。

表的个数

记录集看起来像单个表。如果记录集将包含来自多个数据库表的数据,则它必须使用JOIN查询,将来自各个数据库表的数据组合到单个结果表中。

相反,数据集是一个或多个表的集合。数据集内的表称为数据表;明确地说,它们是DataTable对象。如果数据集包含来自多个数据库表的数据,它通常将包含多个DataTable对象。即,每个DataTable对象通常对应于单个数据库表或视图。这样,数据集可以模仿基础数据库的结构。

数据集通常还包含关系。数据集内的关系类似于数据库中的外键关系,即它使多个表中的行彼此关联。例如,如果数据集包含一个有关投资者的表和另一个有关每个投资者的股票购买情况的表,则数据集可能还包含一个关系来连接投资者表的各个行和购买表的对应行。

由于数据集可以保存多个独立的表并维护有关表之间关系的信息,因此它可以保存比记录集丰富得多的数据结构,包括自关联的表和具有多对多关系的表。

数据导航和游标

在ADO中,您使用ADOMoveNext方法顺序扫描记录集的行。在ADO.NET中,行表示为集合,因此您可以像依次通过任何集合那样依次通过表,或通过序号索引或主键索引访问特定行。DataRelation对象维护有关主记录和详细资料记录的信息,并提供方法使您可以获取与正在操作的记录相关的记录。例如,从Investor表的"NateSun"的行开始,可以定位到Purchase表中描述其购买情况的那组行。

"游标"是数据库元素,它控制记录导航、更新数据的能力和其他用户对数据库所做更改的可见性。ADO.NET不具有固有的游标对象,而是包含提供传统游标功能的数据类。例如,在ADO.NETDataReader对象中提供只进、只读游标的功能。有关游标功能的更多信息,请参见数据访问技术。

将打开连接的时间降至最低

在ADO.NET中,打开连接的时间仅足够执行数据库操作,例如"选择"(Select)或"更新"(Update)。您可以将行读入数据集中,然后在不保持与数据源的连接的情况下使用它们。在ADO中,记录集可以提供不连接的访问,但ADO主要是为连接的访问设计的。

ADO和ADO.NET中的不连接处理之间存在一个显著差异。在ADO中,通过调用OLEDB提供程序来与数据库通信。但在ADO.NET中,您通过数据适配器(OleDbDataAdapter、SqlDataAdapter、OdbcDataAdapter或OracleDataAdapter对象)与数据库通信,这将调用OLEDB提供程序或基础数据源提供的API。ADO和ADO.NET之间的主要区别在于:在ADO.NET中,数据适配器允许您控制将对数据集所做的更改传输到数据库的方式,方法是实现性能优化、执行数据验证检查或添加其他任何额外处理。

注意数据适配器、数据连接、数据命令和数据读取器是组成.NETFramework数据提供程序的组件。Microsoft和第三方供应商可能会提供其它提供程序,这些提供程序也可集成到VisualStudio中。有关不同.NET数据提供程序的信息,请参见.NET数据提供程序。

在应用程序间共享数据

在应用程序间传输ADO.NET数据集比传输ADO不连接的记录集要容易得多。若要将ADO不连接的记录集从一个组件传输到另一个组件,请使用COM封送。若要在ADO.NET中传输数据,请使用数据集,它可以传输XML流。

相对于COM封送,XML文件的传输提供以下便利之处:

更丰富的数据类型

COM封送提供一组有限的数据类型(由COM标准定义的那些类型)。由于ADO.NET中的数据集传输基于XML格式,所以对数据类型没有限制。因此,共享数据集的组件可以使用这些组件一般会使用的任何丰富的数据类型集。

性能

传输大型ADO记录集或大型ADO.NET数据集会使用网络资源;随着数据量的增长,施加于网络的压力也在增加。ADO和ADO.NET都使您可以最大限度地降低所传输的数据。但ADO.NET还提供另一个性能优势:ADO.NET不需要数据类型转换。而需要COM封送来在组件间传输记录集的ADO,则需要将ADO数据类型转换为COM数据类型。

穿透防火墙

防火墙可以影响试图传输不连接的ADO记录集的两个组件。请记住,防火墙通常配置为允许HTML文本通过,但防止系统级请求(如COM封送)通过。

因为组件使用XML交换ADO.NET数据库,所以防火墙可以允许数据集通过。


4.asp.net页面在什么时候产生?又在什么时候销毁?

答:(1)Page_Init();---初始化对象
这一过程主要是初始化包括页面本身的所有控件,每次的页面载入就会执行一次初试过程,而在这里面访问到的也是控件的初始值。还有就是可以通过OnInit()来重载初试化事件。
(2)LoadViewState---导入Viewstate数据
在初试化事件后,在loadvireState事件中所有控件将获得他们的第一个属性ViewState属性,这个属性最终将被返回给服务器以判断这个页面是已经被用户访问完毕还是仍然在被用户所访问。也可重载loadvireState事件对相应的控件进行值设定。
(3)LoadPostbackdata;---用LoadPostData处理Postback数据
Postback数据也可以理解成就是服务器页面提交的表单数据,每一次表单数据的提交都会触发执行IPostBackDataHandler接口操作的控件。
(4)Page_Load();---导入对象
这个过程就比较熟悉了,也是在页面的每次载入时一定会执行,但是注意和PageInit()之间的区别,所有的对象第一次被布置在DOM页面(在Asp.net中称控件树)里了并且可以通过代码或是相关的位置被引用。这样,对象就可以很容易的从客户端获得诸如宽度、高度、值、可见性等在Html中的属性值。经常会用到的Page.IsPostBack()指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问.
(5)Handlecontrolevents;---具体的控件事件
这个过程执行的是相应具体控件事件,比如按钮事件..等。
(6)Page_PreRender();---预先呈递对象
预先呈递对象可以改变对象并将改变保存的最后时刻.可以对控件的属性、控件树的结构等做出最后的修改,同时还不用考虑Asp.net对其作出任何改变,因为此时已经脱离了数据库调用以及viewstate更新了,也可以通过OnPreRender来重载。
(7)Page_Render();---呈递对象呈递页面
所有对页面控件的修改完成后viewstate就被保存了。运用Html创建给浏览器输出的页面的时候Render事件就发生了。在Render事件过程中,页面调用其中的对象将它们呈递给Html。然后,页面就可以以Html的形式被用户的浏览器访问了。当Render事件被重载时,开发者可以编写自定义的Html代码使得原先生成的Html都无效而按照新的Html来组织页面。Render方法将一个HtmlTextWriter对象作为参数并用它将Html在浏览器上以网页的形式显示。这时仍然可以做一些修改动作,不过它们只是客户端的一些变化而已了。亦可以重载Render事件。

(8)Unloadevent;---卸载对象
当想服务器请求一个对象的时候,就会在内存里生成一个继承页面对象,也就是页面的类,它继承自System.Web.UI.Page.
当页面对象从内存中卸载时发生,将触发该事件.
(9)Disposemethodcalled
在呈递给Html完成后,所有的对象都应被销毁。在Dispose事件中,你应该销毁所有在建立这个页面时创建的对象。这时,所有的处理已经完毕,所以销毁任何剩下的对象都是不会产生错误的,包括页面对象。你可以重载Dispose事件。


5.Session,ViewState,Application,cookie的区别?

答:Session:Session用于保持状态的基于Web服务器的方法。Session允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象。主要用于保持代码隐藏类中对象的状态。为每个用创建的,用于存储单个用户,因为他是相对每个用户的.所以可能来取得在线人数等。
ViewState:主要用于保持Web页上控件的状态。当Web页上的控件被绑定到代码隐藏类中的对象。
Application用于存储所有用户都可视的信息.所以它存储的是要让所有用户共享的一些信息.如总访问数等;
Cache:页面缓存。
cookie:通常我们都把它放在客户端,也可以存储在服务器端。主要用它存储用户的个性设制,和登陆信息。


6.面向对象的思想主要包括什么?

答:开发人员应该熟悉面向对象软件开发(OOP)基本概念,熟悉面向对象软件开发中的类、继承、封装、多态等概念,具备良好的面向对象软件开发思想和设计原则。


7.什么是ASP.net中的用户控件?

答:用户控件。用户控件是能够在其中放置标记和Web服务器控件的容器。然后,可以将用户控件作为一个单元对待,为其定义属性和方法。


8.什么叫应用程序域?什么是受管制的代码?什么是强类型和强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

答:(1)应用程序域为隔离正在运行的应用程序提供了一种灵活而安全的方法。

(2)受管制的代码:在.NET环境中运行的任何代码都称为受管制的代码(unmanagedcode),.NET外部的其他代码也运行在Windows上,这些代码称为未受管制的代码(unmanagedcode)。

(3)强类型和弱类型的区别在与,在编码过程中是否要指定数据类型,作为强类型必须指定数据类型,编译器为其分配相应的存储空间(如c,pascal)否则编译出错。而弱类型不一定需要指定数据类型,编译器会用相同的空间去分配各种类型,除非你指定了(如basic)。作为强类型语言,在编译阶段的安全性要高于弱语言型。

强类型系统:RTTI:类型识别系统。

(4)装箱就是隐式的将一个值型转换为引用型对象。比如:
inti=0;
Syste.Objectobj=i;
这个过程就是装箱!就是将i装箱!
拆箱就是将一个引用型对象转换成任意值型!比如:
inti=0;
System.Objectobj=i;
intj=(int)obj;
这个过程前2句是将i装箱,后一句是将obj拆箱!
再写个代码,看看进行了几次装拆箱!
inti=0;
System.Objectobj=i;
Console.WriteLine(i+","+(int)obj);
其中共发生了3次装箱和一次拆箱!^_^,看出来了吧?!
第一次是将i装箱,第2次是输出的时候将i转换成string类型,而string类型为引用类型,即又是装箱,第三次装箱就是(int)obj的转换成string类型,装箱!
拆箱就是(int)obj,将obj拆箱!!

(5)重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

(6)CLR的全称是公共语言运行库(CommonLanguageRuntime),读者可以把CLR理解为一个包含运行.NET程序的引擎和一堆符合公共语言基础结构的类库的集合。CLR是一个规范的实现,我们开发的几乎所有的.NET程序都基于CLR的类库来实现,并且运行在CLR提供的运行引擎之上。所谓.NET框架,指的就是公共语言运行库。
公共语言基础(CLI)是微软公司向ECMA提交的一份语言和数据格式规范,CLR是目前为止唯一一个公共语言基础的实现版本。
CTS的全称是通用类型系统(CommonTypeSystem)。前文已经介绍了公共语言基础(CLI)的概念,微软公司提交的CLI规范,包括了公共类型系统(CTS)、公共中间语言(CIL)、底部文件格式以及元数据格式等。公共类型系统定义了一个能够在CLR上运行的语言规范。尽管有很多语言本身不符合CTS规范,但是通过加强编译器,改变语言附加规范等手段,使得许多语言能够编写出能在CLR上运行的程序。

一种语言编写的程序编译能够在CLR上运行,并不代表这种语言本身完全符合CTS的规范。例如C++语言,仍然保持了其不符合CTS规范的部分,并且在编译时把这部分不符合CTS的代码编译成原始代码而非中间代码。
最后来看一下CLS的概念。公共语言规范(CLS)是CTS的一个子集,它定义了希望编写在.NET平台上运行的程序的语言所需符合的最小规范。正因为.NET允许由不同语言编写的程序一起执行,所以才制定出CLS规范,用以避免不同语言特性产生的错误。


9.列举一下你所了解的XML技术及其应用

答:xml可以用来做网页(xslt)xml可以当作数据库xml可以用来保存对象的系列化


10.值类型和引用类型的区别?写出C#的样例代码。

答:值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等

关于.NET入门知识问答,了解更多热门.NET问题就到中软国际

相关阅读

更多

中软卓越java培训地址:北京市海淀区科学院南路2号融科资讯中心C座北楼12层 联系电话:400-666-3775 邮箱账号:etc-marketing@chinasofti.com

©2008-2016 北京中软国际教育科技股份有限公司 京ICP备14058756号-2