dotnet之葵花宝典(综合整理版).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1. CLR、CTS、CLS 分别是什么意思? 共公语言运行库,通用类型系统,公共语言规范 2. 什么是基元类型? 由编译器直接支持的数据类型称为基元类型. 例如:C#中的int,string等等就是,实际运行过程中被映射为FCL中对应的类型(java中叫做包装类) 如:System.Int32,System.String. 3. 值类型和引用类型的区别是什么?为什么要设计值类型?值类型会被GC回收吗?值类型是否能在托管堆分配? 1. a.值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。 b.值类型存取速度快,引用类型存取速度慢。 c.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用d.值类型继承自System.ValueType,引用类型继承自System.Object e.C#中基本数据类型是值类型,结构也是值类型。而数组、类、接口、字符串都是引用类型。 2. 设计值类型为了效率高,快速分配空间 3.它在栈上,不会被GC回收.(GC只回收托管堆上的内容) 4.不可以,除非将它装箱. 4. Equals、= =、ReferenceEquals 如何区别使用? Equals确定指定的实例是否被视为相等,但是如果为空就不能被调用,常被重写override ==:对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。 ReferenceEquals是Object的静态方法,用于比较两个引用类型的对象是否是对于同一个对象的引用。对于值类型它总是返回false。 5. 什么是虚方法?如何理解多态? 虚方法就是用virtual修饰的方法.调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员.它是实现多态的途径之一. 通过多态,实现了对象的多样性,并且实现迟绑定,提高程序的灵活性. 6. overload 和 override 有什么区别? Overload:c#没有该关键字,理解为重载,属于运行前,编译时的一种技术.是继承的范畴. Override:是运行时技术,用它实现多态. 方法的重写Overriding和重载Overloading是多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 7. 基于接口编程的目的是什么?什么情况下使用接口,什么情况下使用抽象类? 目的:(1)a.采用基于接口编程的项目,业务逻辑清晰,代码易懂,方便扩展,可维护性强。 b. 接口和实现分离了,适于团队的协作开发。 C.可以参看IDP原则。 (2) 用来对实现它的类提供约束用接口 (3) 当要访问到数据成员或属性时,用抽象类. 基于接口编程的目的是为了提高程序的灵活性. 当一个类要准备继承多个类的时候,必须用接口, 当一个类需要被继承且有方法必须要被定义时,用抽象类. 8. 委托是什么意思?什么叫委托链?我们能在代码中继承 MulticastDelegate吗? (1) 委托是一个可以对方法进行引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用 1.委托是通过对方法名的调用来调用方法的一种对象,委托类似于 C++ 函数指针,但它们是类型安全的。 委托允许将方法作为参数进行传递。委托可用于定义回调方法。 2.将多个委托链接在一起,供对象使用,构成委托链 3. MulticastDelegate 是一个特殊类。编译器和其他工具可以从此类派生,但是不能显式地从此类进行派生 9. 实现 Iterators 一般用到哪些接口? IEnumerable, IEnumerator 10. 请写一个简单泛型类型,要求有两个泛型参数 T、K,其中 T 必须是值类型,K 必须实现了 IDisposable 接口。 class clsT,K ???? where T:struct ???? where K:IDisposable { ????? private boo

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档