- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)