随笔分类 - 读书笔记
跟小静读CLR via C#(04)- 本是同根生
摘要:跟小静读CLR via C#(04)- 本是同根生说起.NET中的类,本是同根生,一点不为过。因为CLR要求所有类都要继承自System.Object。所有对象都必须提供一组通用操作,包括对象的等值性、唯一性、散列码以及克隆。 一、等值性——Equals()方法 有时候我们需要比较两个对象是否相等,比如在一个ArrayList中进行排序查找等操作时。 System.Object提供了Equals()虚方法: class Object { public virtual Boolean Equals(object o) { if (this == o) return true; else retu
阅读全文
跟小静读CLR via C#(03)- 对象创建和类型转换
摘要:跟小静读CLR via C#(03)- 对象创建和类型转换本节内容不太复杂,主要是介绍类的实例创建过程,以及类型之间相互转换的知识。 一、 创建对象CLR要求用new操作符创建对象,这个操作符在编译时产生的IL指令为newobj。例如: Student XiaoJing=new Student(“XiaoJing”,”1986”);那么在创建过程中,究竟发生了什么事呢? 分配空间。在托管堆中分配该类所需要字节数的内存空间。初始化对象的附加成员。每个对象有两个附加成员:一是指向类方法表的指针;二是SyncBlockIndex成员,CLR用该字段进行线程同步控制,某些位还可以用作垃圾回收标 记等等
阅读全文
跟小静读CLR via C#(02)-基元类型、引用类型、值类型
摘要:跟小静读CLR via C#(02)-基元类型、引用类型、值类型 一、 基元类型 编译器能够直接支持的数据类型叫做基元类型。例如int, string等。基元类型和.NET框架类库FCL存在着直接的映射关系。 string和String? 面试的时候曾经被问到过这个问题,C#中的基元类型string实际上对应了System.String(FCL)类型,所以两者使用的时候没有什么不同。 类型转...
阅读全文
跟小静读CLR via C#(01)-.NET平台下代码是怎么跑起来的
摘要:跟小静读CLR via C#(01)-.NET平台下代码是怎么跑起来的想起前些日子去某知名电子商务公司面试的时候,问了很多我.NET程序的运行机制,当时很多比较底层的问题都没答好,发现自己的知识太皮毛了。于是决定好好学习。今天看的是代码在.NET平台体系下的执行过程,它是怎么跑起来的? 1. 源代码编译为托管模块 程序在.NET框架下运行,首先要将源代码编译为托管模块。CLR是一个可以被多种语言所使用的运行时,它的很多特性可以用于所有面向它的开发语言。微软开发了多种语言的编译器,编译时会使用相应的编译器进行语法检查器和代码分析器,在编译完成后都生成一个托管模块。 托管模块? 托管模块是一个需.
阅读全文
C#基础拾遗03-注册表保存用户设置
摘要:1. 注册表介绍 注册表查看工具regedit.exe。最高级主要包括5个键。另外还有2个隐藏的,一般不常用。2. 注册表操作.NET操作注册表主要用到两个类,命名空间为Microsoft.Win32。RegistryKey:针对具体键的操作,包括3个只读属性和一些列的方法,分别添加、删除和设定子键和值。Registry:主要包括7个只读属性,分别对应可能存在的7个顶级键。3. 注册表实例实例很简单:通过下拉框选择颜色,作为窗体的背景色。当关闭窗口时自动保存设置。² 页面布局:新建Windows Application程序,在窗体上添加一个ComboBox控件;² 初始化颜
阅读全文
C#基础拾遗02-XML串行化
摘要:C#基础拾遗02-XML串行化1. 什么叫串行化? 串行化(Serialize)是指将对象存储到介质(如文件、内存缓冲区等)中或是以二进制方式通过网络传输。反串行化(Deserialize)指将这些连续的数据重新构建一个与原始对象状态相同的对象 2. 串行化分类两种形式 二进制串行化串行化时数据以二进制形式存入文件。但是该方式不适合同其他非.NET程序交换数据。 XML串行化对象的公共属性以XML元素和特性表示。该方式可以和其他非.NET程序交换数据。该方法要引用命名空间using System.Xml.Serialization; 另外,XML串行化器是不能针对枚举类型串行化操作的,如果有必
阅读全文
C#.net内幕(07)-Visual Studio几个被我忽略的工具
摘要:Visual Studio IDE环境1. 自定义工具 VS已经集成了丰富的开发工具,但是由于个人偏好不同,有时候仍然希望定义一些常用的外部工具。例如现在我们要在Tools下面添加Notepad的菜单,操作步骤如下: 首先在菜单栏中Tools中找到External Tools,点击Add。然后如下图填写参数和路径。其中Title是菜单的命名,Command填写可执行文件的路径,Arguments 和Initial directory选择Target directory。保存后测试下效果,这时候Tools菜单下面已经包含了”NotePad”项,单击后可以正常打开记事本程序。2. 向前/向后快速导
阅读全文
浅谈设计模式01-策略模式
摘要:一、 定义 最近开始研读Head First设计模式,这本书给人的感觉耳目一新,不容易犯困啊。今天和大家分享一下策略模式。 1. 定义: 策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用该算法的客户。 上图为策略模式结构图,其中: Strategy可以声明为接口或者抽象类,主要用来抽象不同的算法或行为;ConcreteStrategyA等是上述接口或抽象类的具体实现,分别实现不同的算法或者行为;Context中包含Strategy的实例,以及对该实例的操作。2. 设计模式原则: 多用组合,少用继承。找出应用中可能变化之处,把它们独立出来,不要和那些不需.
阅读全文
我读我的Book
摘要:精神的食粮有点不足了,所以最近正在疯狂补充营养,爱上看书。为了监督自个的进度,决定占个随笔的位置。大家有什么好的书籍或者资料的话,可以推荐下哈。Reading ...【技术】C#高级编程 2010-11-3 16:27:51 :书籍写的很全面,总体感觉还可以,不过好厚哟,上千页哩。看到后来感觉有点看不动了。 目前看到了通讯部分。这方面还真没接触过,有点吃力呢。2010-11-26 14:43:50通讯部分暂时跳过,简单了解了访问Internet章节。哎呀,最后的 windows服务 部分又进展不下去了。看来接触的少的东西就是不容易看下去。可是学习就是要学不懂得东西,不是吗?不过也好,剩下两个部
阅读全文
C#高级编程-共享程序集强命名
摘要:首先记一下查看程序集的命令:命令行输入ildasm,这是一个反汇编程序。此外,.net Reflector也是分析程序集的强大工具,可以将IL代码反编译为C#,C++,VB。网址http://www.aisto.com/roeder/dotnet。 言归正传了,共享程序集需要进行强命名。要利用sn.exe产生密钥对。具体步骤:创建类库,命名空间为Sharing,与建立普通类库过程一致。创建强命名:生成公钥与私钥对,并对私钥做严格的保护。 ①可以项目属性-》Signing-Sign the assembly,然后选择或者添加pfx文件即可。 ②使用命令行工具: 生成:sn -k e:\Stu
阅读全文
c#.net技术内幕(06)----验证
摘要:1. 客户端检验:首先配置客户端检验,需要用到javascript脚本库,WebUIValidation.js。安装脚本库:aspnet_regiis –c,卸载脚本库:aspnet_regiis –e。 禁用客户端检验:<%@page ClientTarget=”DownLevel”>2. 验证必填----RequriedFieleValidator:IsValid:是否通过检验,是-true,否-false;可以检查控件,也可以检查页面。只有所有验证控件IsValid为true,page.IsValid才为true.InitialValue:控件初始值。与初始值比较:例如开始文
阅读全文
C#.net技术内幕05-面向对象概念
摘要:继承: 类可以从基类继承得到所有的操作、属性、特性、事件以及这些内容的实现方法。但不能继承实例构造函数、析构函数和静态构造函数,也不能继承那些显示拒绝访问的成员。继承扩展了基类,并且是可传递的。而且派生类可以声明同样名称或同样签名的新操作,来隐藏继承得到的成员。多态性:指能够根据根据数据类或者数据类型,以不同的方式处理对象。或者说,提供方法或者属性的不同实现方法,但具有相同的签名。三种类型多态性:接口多态性、继承多态性和抽象类多态性。 接口多态性:多个类可以实现同样的接口,一个类也可以实现多个接口。 继承多态性:在基类中使用virtual关键字,然后在子类中重写功能。由于继承类会继承基类中所有
阅读全文
C#.net技术内幕04-集合
摘要:锯齿数组:锯齿数组就是数组的数组。例如:Int[]a=newint[][]{Newint[]{1,1,1};Newint[]{23,12};} 2.Out与ref:将数组作为参数传递时,在调用函数之前不需要初始化out参数,但调用的函数必须在返回前分配数组类型。而且,ref参数必须在函数调用之前分配。 3. 枚举数(enumerator): 它是一个对象,可以通过它对集合项进行便利。枚举数只能读取但不能改变集合的至。在实例化后,会被放在集合第一个元素之前。如果不调用movenexe就直接使用current访问的话会出错。当枚举数到达集合的末尾时,会停留在集合的最后一个元素后面,并返回假。如果此
阅读全文
C#.net技术内幕03---字符串
摘要:String与StringBuilderstring字符串具有不变性。其实两个字符串连接后产生的是一个新字符串。因此当使用大量字符串时会降低性能。而StringBuilder可以高效的使用字符串。命名空间是System.text。累加字符串时不会每次都生成新的对象,因此当大量构造时不会影响很多性能。 转义字符当字符串中包含制表符、反斜线等时,需要使用转义序列,也可以在字符串签名加上@。StringBuilder常用方法: Append:追加字符串。具有多种重载方法。 Appendformat:追加格式化的字符串。 Insert:(插入的索引位置,插入的值)。 Replace:可以先创建一个字符
阅读全文
C#.NET技术内幕 02----表达式
摘要:5.在c#中,+、-、*、/、++,--,>等一系列的运算符都是可以重载的,但是+=,-=等运算符不可以重载。6.要注意短路运算。例如两个表达式进行与运算,而第一个表达式为假,则第二个表达式不再予以执行。7.switch语句:每个case语句都要包含一个break;当case没有语句时,才会失败;如果想从一个case跳转到另外一个case,使用goto。8.break语句用来跳出循环,而continue语句是用来跳出循环语句的其余部分,并且将控制权交给循环语句体的下一次循环。
阅读全文
《 C#技术内幕》学习01--IDisposable
摘要:《 C#技术内幕》笔记11.IL:中间代码。.net编译器所编译的代码成为IL。2.JIT:实时编译器3.CLR:公共语言运行时,comm langua runtime。4.CLS:公用语言运行规范5.CTS:common type system,公共类型系统6.在创建数据库连接时,.net提供了一种设计模式:Idisposable. 可以使相应类集成Idisposable。并且调用时使用using,以保证对象结束时会调用Disposal方法。例如:定义类public class A : IDisposable { privateSqlConnection conn = new SqlConn
阅读全文
浙公网安备 33010602011771号