1.简述.NET中CTS、CLS以及CLR的含义与作用。

A:CTS指公共类型系统,是.NET平台中各种语言必须遵守的类型规范;CLS指公共语言规范,是.NET平台中各种语言必须遵守的语言规范;CLR指公共语言运行时,它是一个虚拟机,.NET平台中所有的托管代码均需要运行在CLR中,你可以把它看成另外一个操作系统。

2.简述.NET程序集(exe文件、dll文件)不能在无CLR环境的操作系统中运行的原因?

A:.NET程序集并不是最终可以运行在操作系统中的机器指令,它只是介于源代码和机器指令之间的一个中间件,没有CLR的存在,就不能将该中间件转换成对应操作系统中的机器指令。换句话说,.NET程序集不是传统意义上的可执行文件。

3..NET是否支持跨平台?与Java平台的区别在哪里?

A:支持,理论上讲,.NET的跨平台和Java的跨平台没有差别。

4..NET中程序集的“可执行性”与“可读性”分别指什么?

A:.NET中的程序集是一种介于源代码和机器代码之间的中间件,对于开发者来讲,可以从程序集中读取出类似元数据、IL代码或者资源数据等信息,而对于最终用户,程序集是可以在CLR中运行的。

1.“值类型对象分配在栈中,引用类型对象分配在堆中”这句话是否准确?为什么?

A:严格上讲,不太准确,值类型对象也可以被包含在引用类型对象内部,一起分配在堆中,因此不能一概而论。

2.“值类型对象的赋值就等于对象的浅复制”这句话是否正确?为什么?

A:正确。值类型对象赋值的过程就是浅复制的过程,依次将对象成员一一进行拷贝。

3.下面代码Code 3-13运行后会输出“true”,因此可以判断String是值类型,因为只有值类型判等时才比较两者所包含的内容是否一一相等,以上陈述是否正确?为什么?

//Code 3-13·66·

class Program

{

static void Main()

{

String a = new String(“123”);

String b = new String(“123”);

if(a == b)

{

Console.WriteLine(“true”);

}

else

{

Console.WriteLine(“false”);

}

}

}

A:错。String类型是一个特殊的引用类型,它的判等不同于其它引用类型去比较对象引用是否指向堆中同一实例,而是和值类型判等一致,比较对象内容是否一一相等。除此之外,String类型还是不可改变类型,对String对象的任何操作均不能改变该对象。

4.简要描述深复制与浅复制的区别。

A:对象进行浅复制时,只将对象的直接成员一一进行拷贝,当对象包含有引用类型成员时,源对象与副本之间有关联;对象进行深复制时,会将对象的所有成员(包括直接成员于间接成员)依次进行拷贝,不管对象是否包含引用类型成员,源对象与副本都无任何关联。

1.“当栈中没有引用指向堆中对象实例时,GC会对堆中实例进行内存回收”这句话是否准确?为什么?

A:不准确。因为GC不但会检查栈中的引用,还会检查堆中是否有引用。因此,只有当没有任何引用指向堆中对象实例时,GC才会考虑回收对象实例所占用的内存。

2.如果一个类型正确地实现了IDisposable接口,那么调用该类型对象的Dispose()方法后,是否意味着该对象已经死亡?为什么?

A:调用一个对象的Dispose()方法后,并不表明该对象死亡,只有GC将对象实例占用的内存回收后,才可以说对象死亡。但是通常情况下,调用对象的Dispose()方法后,由于释放了该对象的非托管资源,因此该对象几乎就处于“无用”状态,“等待死亡”是它正确的选择。

3.如果一个类型使用了非托管资源,那么释放非托管资源的最佳时机是什么时候?

A:当对象使用完毕后,就应该及时释放它的非托管资源,比如调用它的Dispose()方法(如果有),对象的非托管资源释放后,对象基本上就处于“无用”状态,因此一般不能再继续使用该对象。为了防止遗忘手动释放对象的非托管资源,我们应该在对象的析构方法中编写释放非托管资源的代码,这样一来,假如我们没有手动释放对象的非托管资源,GC也会在适当时机调用析构方法,对象的非托管资源总能正确被释放。

1.简述委托包含哪两个重要部分。

A:委托包含两个重要组成:Method和Target,分别代表委托要调用的方法和该方法所属的对象(如果为静态方法,则Target为null)。

2.怎样简单地说明委托的不可改变特性?

A:对委托的所有操作,均需要将操作后的结果在进行赋值,比如使用“+=”、“-=”将操作后的结果赋值给原委托变量。这说明对委托的操作均不能改变委托本身。

3.“事件是委托对象”是否准确?

A:准确。.NET中的事件是一种特殊的委托对象,即在定义委托对象时,在声明语句前增加了“event”关键字。事件的出现确保委托的调用只能发生在类型内部。

4.为什么说委托是.NET中的“重中之重”?

A:因为程序的运行过程就是方法的不断调用过程,而委托的作用就是“调用方法”,它不仅能够将方法作为参数传递,还能同时(同步或异步)调用多个具有相同签名的方法。

5.弱委托的关键是什么?

A:弱委托的关键是弱引用,弱委托是通过弱引用实现的。

《修炼之道:.NET开发要点精讲》读书笔记(二)的更多相关文章

  1. 《CSS世界》笔记二:盒模型四大家族

    上一篇:<CSS世界>笔记一:流/元素/尺寸下一篇:<CSS世界>笔记三:内联元素与对齐 写在前面 在读<CSS世界>第四章之前,粗浅的认为盒模型无非是margin ...

  2. CSS揭秘读书笔记 (一)

    CSS揭秘读书笔记      (一) 一.半透明边框 要想实现半透明边框可以使用border: border: 10px  solid  hsla(0,0%,100%,.5); background: ...

  3. 《你必须知道的.NET》读书笔记二:小OO有大原则

    此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.单一职责原则 (1)核心思想:一个类最好只做一件事,只有一个引起它变化的原因 (2)常用模式:Fa ...

  4. spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定

    本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,而且IoC Service Pr ...

  5. ES6读书笔记(二)

    前言 前段时间整理了ES6的读书笔记:<ES6读书笔记(一)>,现在为第二篇,本篇内容包括: 一.数组扩展 二.对象扩展 三.函数扩展 四.Set和Map数据结构 五.Reflect 本文 ...

  6. 《精通CSS》读书笔记(一)

    最近新添16本书,目前开始看陈剑瓯翻译的<精通CSS——高级Web标准解决方案>(Andy Budd, CSS Mastery -- Advanced Web Standards Solu ...

  7. spring揭秘 读书笔记 二 BeanFactory的对象注冊与依赖绑定

    本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,并且IoC Service Pr ...

  8. 【记】《.net之美》之读书笔记(二) C#中的泛型

    前言 上一篇读书笔记,很多小伙伴说这本书很不错,所以趁着国庆假期,继续我的读书之旅,来跟随书中作者一起温习并掌握第二章的内容吧. 一.理解泛型 1.为什么要使用泛型?-----通过使用泛型,可以极大地 ...

  9. Mastering Web Application Development with AngularJS 读书笔记(二)

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

  10. how tomcat works 读书笔记(二)----------一个简单的servlet容器

    app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...

随机推荐

  1. python———day03

    一.字符串格式化输出: 占位符    %s(字符串) %d(整数) %f(浮点数,约等于小数) name = input("Name:") age = input("Ag ...

  2. [UNITY 5.4 UGUI] 模态对话框

    1.建立两个画布 a.背景界面 b.置顶界面(添加一个 panel 控件) 2.修改置顶界面中 panel ,添加属性 [Canvas Group] 3.根据界面设计情况修改透明度,色彩,图片

  3. html页面嵌套两个iframe页面导致第二个iframe页面高度失效的问题

    1:这是因为最里面嵌套的iframe页面html和body高度无法设置问题,我的解决办法是js去控制iframe高度 2:js获取最子页面(content内容区域)的高度 var ifremHeigh ...

  4. python大法好——飞机大战

    import pygame from pygame.locals import * import time def key_control(hero_temp): # 获取事件,比如按键等 for e ...

  5. 在Python脚本中调用Django环境

    import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", " ...

  6. EXCEL文本字符串转日期

    =IF(ISERROR(DATEVALUE(A2)), A2, DATEVALUE(A2)) 注意ISERROR函数的使用,如果DATEVALUE解析字符串失败,比如单元格数值本来就是日期,会发挥#V ...

  7. Spring_Four -- 团队项目设计完善&编码测试

    团队项目设计完善&编码测试 1.文档<软件设计方案说明书>github地址:https://github.com/gzyt/SRS 2.项目集成开发环境 数据库:Mysql 5.0 ...

  8. 大型分布式架构设计与实现-第一章SOA(面向服务的体系架构)

    拜读了大型分布式架构设计与实现,觉得该书作为入门不错,但内容过于简单,描述过于琐碎,小节之间连续性不强,不适合深入钻研学习.但为了更多的希望向架构师行业靠拢的工程师学习需要,本博客将对上书进行简化讲解 ...

  9. jquery 事件的触发与绑定

    bind事件绑定: live事件绑定: hover事件绑定: one事件绑定 toggle事件绑定:

  10. 解决React Native:Error: Cannot find module 'asap/raw'

    本来想做个底部切换的tab的,安装完 npm i react-native-tab-navigator --save 后跑项目就报错了,如下图 和我一样报这个错的朋友们莫慌,一步就可以解决了,执行命令 ...