您的位置:首页 > 编程语言 > C#

Essential C# 2.0》读书笔记 第二章 数据类型

2007-12-20 14:26 375 查看
《Essential C# 2.0》读书笔记 第二章 数据类型

从技术上讲,所有的数据类型都定义在了.NET Framework 基础类库(BCL)中,C#以及其他.NET编程语言中的基本数据类型都是用关键字来映射对BCL中那些比较简单常用的数据类型,从而形成该语言自己的特色。比如BCL中的32位整数类型System.Int32,在C#中被映射为关键字int,而在VB.NET中则为关键字Integer。这样一来,这些类型就成为了这些编程语言中的基本数据类型,在使用上会有一定程度的简化,从而方便代码编写。
整数类型有8种,其区别在于占用内存空间的大小,以及是否有符号,这两者也决定了其类型可以表达的数字范围。
浮点类型有2种(float和double),double类型精确度更高,但两者都不能精确表示一个小数,只能接近这个小数。
对于大的或精确的计算,尤其是财务运算,则应该使用decimal类型。decimal类型拥有128位的精度。
将整数以十六进制输出的方法是:Console.WriteLine("0x{0:X}", 42);
除了数字类型外,还有一些其他的类型:bool,char和string。
bool类型只有两个值:true和false,分别用于表示真和假,所以经常用来用判断或循环条件。
char类型用16位来表示一个字符,字符采用Unicode编码。字符常量要用单引号括起来。有一些特殊不能直接表示,必须通过转义字符来表示。
string类型表示一串字符。字符串常量要用双引号括起来,而且中间不能换行。如果在字符串常量前加前缘@符号,那么这个字符串中的转义字符将不被解释,字符串也可以换行,如果输出的话,该字符串将原样输出。
字符串的长度可以通过Length属性获得。
字符串是不可变的。对字符串的操作会导致一个新的字符串产生,而原字符串不会有任何改变。所以,如果要对字符串做多次操作,可能会产生大量的无用的字符串,浪费内存空间,这时可考虑使用System.Text.StringBuilder类型。
有两个和类型相关的关键字:null和void。null用于表示变量没有指派任何值,是一个代表“空”的值,而void则表示缺乏类型或缺乏值,代表一种类型。
所有的类型被分为两类:值类型和引用类型。前者声明的变量可以直接存储值,而后者声明的变量存储的是该值(对象)所在的地址,我们称这个变量“引用”了该对象。引用类型的值(对象)被创建在被称为堆(heap)的内存空间中,而值类型常常用在被称为栈(stack)的内存空间中,当然如果值类型是引用类型的一个字段,那么将作为引用类型值(对象)的一部分,被创建在堆中。引用类型的变量如果被赋以null,则表示该变量没有“引用”任何对象,或者说“引用”了“空”地址。所以值类型变量不能赋以null值,因为它不存储地址,从而必须指定一个值。
C#2.0还支持一种叫作可空类型(Nullable)的特殊类型。该类型声明的是值类型的变量,但该变量可以指定null值。例如:int? count = null; 这在数据库编程中比较吸引人,因为SQL中的值类型允许null值。
类型之间经常要做一些转换,从而把一个类型的变量转换为另一个类型。转换分为显式转换(Explicit Cast)和隐式转换(Implicit Cast),后者是自动的,而前者则需要写代码,而且在进行数字之间进行转换,有可能导致溢出。checked代码块会检测溢出,并抛出System.OverflowException。而unchecked代码则相反。编译器命令csc.exe的/check选项用于指定在编译时是否打开溢出检测功能,默认是关闭此功能的。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息