[.NET(C#)]attribute和property的区别
把attribute翻译成特性,用来标识类,方法把property翻译为属性,性质,用于存取类的字段把markup翻译成标记,tag还是翻译成标签比较好
[.NET(C#)].NETFramework的核心
是其运行库的执行环境。称为公共语言运行库(CLR)或.NET运行库.通常将在CLR的控制下运行的代码称为托管代码(managedcode).在CLR执行开发的源代码之前,需要编译它们为中间语言(IL),CLR再把IL编译为平台专用的代码。
程序集(assembly)是包含编译好的,面向.NETFramework的代码的逻辑单元.可执行代码和库代码使用相同的程序集结构.程序集的一个重要特性是它们包含的元数据描述了对应代码中定义的类型和方法.
[.NET(C#)]ASP和ASP.NET的区别
ASP页面有时显示比较慢,因为服务器端代码是解释性的不是编译的.由于ASP代码不是结构化的所以难于维护,加上ASP不支持错误处理和语法检查。而ASP.NET页面是结构化的。每个页面都是一个继承了.NET类System.Web.UI.Page的类。另外ASP.NET的后台编码功能允许进一步采用结构化的方式.页面请求是和WEB服务器在编译后高速缓存ASP.NET页面。
[.NET(C#)]覆盖(override)和重载(overload)
覆盖是指子类重新定义父类的虚函数的做法。重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。其实,重载的概念并不属于面向对象编程,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:functionfunc(p:integer):integer;和functionfunc(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是有进有出,out是只出不进。
[.NET(C#)]ADO和ADO.NET的区别
ADO使用OLEDB接口并基于微软的COM技术而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本ADO.NET的数据库连接也只有在这段时间需要在线。由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。ADO.NET为.NET构架提供了优化的数据访问模型,和基于COM的ADO是完全两样的数据访问方式。
ado.net与ado存在着比较大的差异:1.ado.net遵循更通用的原则,不那么专门面向数据库。ado.net集合了所有允许数据处理的类。这些类表示具有典型数据库功能(如索引,排序和视图)的数据容器对象。尽管ado.net是.net数据库应用程序的权威解决方案但从总体设计上看,它不像ado数据模型那样以数据库为中心,这是ado.net的一大特点。2.目前,ado.net提供了两种数据库访问类库:一种用于sqlserver7.0或更高版本另一种用于其他所有您可能已经安装的oledb提供程序。在这两种情况下,您分别使用不同的类,但遵循相似的命名规则。除前缀,名称都是相同的。前一种情况前缀为sql,后一种情况则是oledb。同时,.net框架还提供了odbc.net的数据访问模式。odbc.netdataprovider是.net框架的增强组件,它可以访问原始的odbc驱动程序就像oledb.netdataprovider可以访问原始的oledbproviders一样。目前它仅在下列驱动程序中测试过:microsoftsqlodbcdriver,microsoftodbcdriverfororacle,microsoftjetodbcdriver。3.ado.net提供了两个队形来处理从数据源中抽取数据,它们是dataset和datareader对象。前者是记录在内存中的缓存,您可以从任何方向随意访问和修改。后者是高度优化的对象,专为以仅向前方式滚动只读记录而设计。4.ado.net统一了数据容器类编程接口,无论您打算编写何种应用程序,windows窗体,web窗体还是web服务都可以通过同一组类来处理数据。不管在后端的数据源数sqlserver数据库,oledb,xml文件还是一个数组您都可以通过相同的方法和属性来滚动和处理它们的内容。5.在ado中,xml只不过是输入和输出格式。然而在ado.net中,xml是一种数据格式,提供了操作,组织,共享和传递数据的手段。
ADO。NET相对于ADO等主要有什么改进?1:ado.net不依赖于oledb提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游标,4,可以断开connection而保留当前数据集可用5:强类型转换6:xml支持
[.NET(C#)]new关键字用法
(1)new运算符用于创建对象和调用构造函数。(2)new修饰符用于向基类成员隐藏继承成员。(3)new约束用于在泛型声明中约束可能用作类型参数的参数的类型。指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
[.NET(C#)]C#中,stringstr=null与stringstr=,说明区别
stringstr=初始化对象分配空间而stringstr=null初始化对象
[.NET(C#)]DataGrid的Datasouse可以连接什么数据源
DataTableDataViewDataSetDataViewManager任何实现IListSource接口的组件任何实现IList接口的组件
[.NET(C#)]概述反射和序列化反射
公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
序列化:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
[.NET(C#)]可访问性级别有哪几种
public访问不受限制。protected访问仅限于包含类或从包含类派生的类型。internal访问仅限于当前程序集。protectedinternal访问仅限于从包含类派生的当前程序集或类型。private访问仅限于包含类型。
[.NET(C#)]O/RMapping的原理
利用反射,配置将对象和数据库表映射。
[.NET(C#)]sealed修饰符有什么特点?
sealed修饰符表示密封,用于类时,表示该类不能再被继承不能和abstract同时使用,因为这两个修饰符在含义上互相排斥用于方法和属性时,表示该方法或属性不能再被继承,必须和override关键字一起使用因为使用sealed修饰符的方法或属性肯定是基类中相应的虚成员通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱恰当的利用sealed修饰符也可以提高一定的运行效率,因为不用考虑继承类会重写该成员
0 评论:
发表评论