《C#本质论》第2章 基本数据类型

第2章 数据类型

C#有几种类型非常简单,是其他所有类型的基础,它们称为预处理类型或==基元类型==。

2.1 基本数值类型

2.1.1 整数类型

C#为基元数据类型的完整名称提供了短名称或称为缩写。其实从编译器的角度来看,两种名称完全一样,最终都生成相同的代码。检查最终生成的CIL代码,根本看不出代码具体使用的名称。

C#支持完整BCL名称和关键字,通常使用关键字。

在这里插入图片描述

设计规范

•要在指定数据类型时使用C#关键字而不是BCL名称。

•要一致不要变来变去。

语言对比:C++——short数据类型

C/C++的short数据类型是short int的缩写。而C#的short是一种实际存在的数据类型。

2.1.2 浮点类型

2.1.3 decimal类型

高级主题:解析浮点类型和decimal类型

2.1.4 字面值

字面值表示源代码中的固定值。例如,假定希望用System.Console.WriteLine()输出整数值42和double值1.618034(黄金分割比例)。

System.Console.WriteLine(42); 
System.Console.WriteLine(1.618034);

初学者主题:硬编码值得时候要慎重

直接把值放在源代码中称为硬编码,因为以后若是更改了值,就必须重写编译代码。

默认情况下,输入带小数点得面值,编译器自动把它解释为double类型。

设计规范

•要使用带大写得字面值后缀(例如1.618033988749895M)

•解决可读性问题可以用_分开大额数字。

初学者主题:十六进制计数法

高级主题:将数字格式化十六进制

高级主题:round-trip格式化

2.2更多基本类型

2.2.1 布尔类型 bool

理论上一个二进制位足以容纳一个布尔类型的值,但bool实际大小是一个字节。

2.2.2 字符类型 char

表示16位字符

初学者主题:Unicode标准

这是一个国际化标准,用来表示大多数语言中的字符。它便于计算机系统构建本地化应用程序。

高级主题:16位不足以表示所有UNicode字符。

有的字符不能直接插入源代码,需要进行特殊处理。输入反斜杠\为前缀,再跟随一个特殊字符代码,称为转义序列

2.2.3 字符串

string是一种“不可变”的类型

高级主题:理解字符串插值内部的工作原理

字符串插值是调用了string.Format()方法的语法糖。

语法糖:在不改变其功能的情况下,通过改变代码的写法,让代码更具有可读性。

高级主题:using和 ==using static==指令

using static 每次使用类的成员,不需要该类作为前缀,直接使用其中的方法名即可。 只支持静态方法和属性,不支持实例成员。

高级主题:C#属性

C#语法允许像访问成员变量(在C#中称为字段)那样访问属性。

判断字符串长度可以使用string的Length成员,该成员是只读属性不能设置,调用时也不需要任何参数。

字符串长度不能直接设置,它是根据字符串中的字符数计算得到的,此外,字符串长度不能更改,因为字符串 不可变

不能在同一个内存位置更改字符串,只能在其他内存位置新建字符串,旧的字符串不会被修改,如果没人引用它,会被垃圾回收。

2.3 null和void

null值表示变量不应用任何有效对象。 void表示无类型,或者没有任何值。

2.3.1 null

null可直接赋给字符串变量,表明表明为“空”,不指向任何位置。只能将null赋给引用类型、指针类型和可空值类型。

将null赋给引用类型的变量和根本不赋值是不一样的概念。赋值了null的变量已设置,而未赋值的变量未设置。使用未赋值的变量会造成编译时错误。

2.3.2 void

又是C#语法要求指定数据类型但是不传递任何数据。假定方法无返回值,C#就允许数据类型位置放一个void关键字。void本质不是数据类型,它只是指出没有数据类型这一事实。

2.4 数据类型转换

类型之间的转换至关重要,造成转换的最常见操作就是转型强制类型转换

有可能造成数据丢失或者引发异常的任何转换都需要执行 显示转换。相反,不会丢失数据,而且不会引发异常的任何转换都可以进行 隐式转型

2.4.1 显示转型

语言对比:数值转换为布尔值

C#不存在从数值类型到布尔类型的有效转型,为了避免发生歧义。

2.4.2 隐式转型

2.4.3 不使用转型操作符的类型转换

Parse()方法,允许将字符串类型转换为相应的数值类型。

高级主题:TryParse()

该方法和Parse()相似,只是转换失败不会引发异常,而是返回false。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值