注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

C#精髓摘要(1)  

2011-07-13 22:45:41|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

C#精髓》一书属于O'Reilly出版的动物系列技术书籍,这一系列的书算是赫赫有名了,趁现在有空,走马观花地读一下这本书。

C精髓摘要(1) - Castor - 趁年轻,多折腾~~
封面上的动物是星鼻鼹鼠(Condylura cristata)。与所有鼹鼠一样,星鼻鼹鼠主要居住在自己挖的地下隧道中,觅食时才出来。鼹鼠的身体上布满了防水的灰色短毛,大约6~8英寸长。它们的显著特征是长长的爪子,用于挖掘和觅食都非常理想。它们的眼睛、耳朵很小,牙齿非常锐利。视力和听觉很差。

星鼻鼹鼠的名字来源于它们鼻子上的25个触须,触须可以帮助鼹鼠找到食物,主要是昆虫、蠕虫、小鱼和其他小的池塘生物。星鼻鼹鼠是鼹鼠家族中的游泳健将,可以潜入水中捕鱼。它们喜欢住在沼泽中,分布于美国东北部和加拿大东南部。
星鼻鼹鼠是哺乳动物,雌鼹鼠每年可以生3~6只幼崽。
星鼻鼹鼠对人类的危害比其他鼹鼠要小,因为它偏爱水生食物,很少到人类的后院活动。

第一章 简介

C#关键特性:

面向组件,一站式编码,版本协调,类型安全和统一类型系统(CTS)。自动和手动内存管理,CLR的使用

CLR关键特性:运行时交互,可移植性,安全性,部署简单,简化开发,跨语言集成,与原有代码的互操作性(通过PInvokePlateform Invoke Service,平台调用服务)

BCLBasic Class Library,基类库,供所有语言使用的,功能广泛的类库

第二章 C#语言参考

@不是标识符的一部分,例如@HELLO HELLO

类型的分类:所有类型,包括预定义和自定义的,分为三类,值类型,引用类型和指针类型

枚举是值类型,而像类、数组、委托、接口,指针类型少见,通常用于不安全代码中。

floatdouble类型

float类型有7位有效数字,而double15~16位有效数字。注意像字面值3.14被理解为double型,如果要定义为浮点型需要在后面加上F或者f

decimal类型
decimal类型的值范围小于floatdouble类型,但是提供了28~29位的有效数字。定义decimal类型数值后面需要加上M或者m

object类型

为值类型和引用类型的最终基类,值类型没有存储开销,引用类型需要8个字节,储存的信息是“同步化锁状态或是否已被无用资源回收器固定”的信息。

string

C#编译器和.NET运行时授予该类型特权,新实例可以通过直接量创建,而不需要使用new关键字。String直接量如果用@开头,其中的字符不会被转义。

类型和内存

值类型:位于Stack中,还可以作为对象的一部分声明,例如数组的成员或者类的字段(这个叫做内联,inline

引用类型:引用类型保存着Stack中的一个地址,但是能够指向(引用)兑中已有或者新建的对象。

值类型的装箱和拆箱

装箱(boxing)是值类型转化为引用类型,而拆箱(unboxing)就是相反过程,需要显式转换,如果失败,将会抛出InvalidCastException

变量默认值

未显式赋值的变量都有默认值(注意编译的时候会发出警告)。

Numeric0

boolfalse

char'\0'

Enum0

Referencenull

运算优先级(不确定就使用括号,没看)

算术溢出检测运算符

checkuncheck

用他们包括语句或者语句块,决定在溢出的时候是否抛出OverflowException

语句

C#支持空语句,就是一个分号。

支持goto

foreach支持遍历IEnumerable中的值类型。

Lock语句。调用Monitor类的EnterExit方法,处理线程问题。

命名空间(名字空间)

可嵌套,可以使用点分界。Using可给命名空间起别名,这样比较方便

继承

类只能从一个类中继承。使用冒号来实现。类可以隐式向上转换,而向下转换需要显式进行,转换失败将抛出InvalidCastException

as运算符

用于向下转换,转换失败的结果是null,而不是抛出异常。

is运算符

用于测试一个对象是否来自或者派生自一个特殊类(或者实现了一个接口),通常用于向下转换前的测试工作。

多态性

一种在许多类型上执行同一操作的能力。C#通过继承类和实现接口显现多态性。关键点是,每个类型可以以自己的方式实现共享的特征。

虚函数成员

为了支持多态将方法定义为虚函数(virtual),派生类可以为基类中的虚函数提供自己的实现(override)。

抽象类和成员

抽象类可以有抽象函数。抽象类或者包含抽象成员的类不能被实例化,只有派生类中实现了所有的abstract的函数,才能实例化。

密封类

该类不能被继承。通常该类只包含静态成员,如Math类。另一个作用是,让编译器将此类上的虚方法调用转化为更快的非虚方法调用。

隐藏继承函数

使用关键字new可以隐藏,而不是覆盖某方法的基类实现。例如:

class oldone

{

    public virtual void func(){}

}

class newone:oldone

{

    public new void func(){}

}

因此,与基类相同签名的方法必须显式地指明是覆盖还是隐藏。

访问修饰字

以下五种:publicprivateprotectedinternalprotected internal

protected类型的成员只能在该类和该类的派生类中被访问。

访问修饰字的限制

一个类型或者类型成员自我申明的访问性不能比在声明中使用的类型更大。

访问修饰字不能用于继承修饰字相冲突的时候,例如virtual或者abstract成员不能使用private

override修饰字的函数成员必须与它覆盖的virtual成员的访问性相同。

类和结构

类或者结构由三种成员组成,数据、函数和类型

数据成员包括字段、常量和事件。

函数成员包括方法、属性和索引器(Indexer),运算符、构造器和析构器。

类型成员包括嵌套类型,

类和结构的区别

类是引用类型,结构是值类型

类完全支持继承(sealed除外),结构不能被继承。

类可以有析构器,但是结构没有。

类可以定制无参数构造器并初始化实例字段,结构不能。

实例和静态成员

实例成员与类的实例相关联,而静态成员与类型本身相关联。

readonly修饰的字段不能赋值和修改,常量(const)是在编译时计算的字段,隐含为静态的。优点是可以在编译时计算,编译器能够进行附加的优化。

  评论这张
 
阅读(1180)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016