【读书笔记】C#本质论第二章

C#本质论第二章。

基本数据类型

C#的基本数据类型包括整型,浮点类型以及decimal的特殊浮点类型。

整数类型

  • C#的所有基本类型都有短名称和完整名称,完整名称对应于基类库(Base Class Library)中的类型命名。
  • C#的整数类型共有8种:sbyte byte short ushort int uint long ulong ,其中对应的数据类型所占的大小分别为 8位 16位 32位 64位。对应的范围为2的相应次方个数,具体表示为负2的n-1次方2的n-1次方

浮点类型

  • 二进制浮点类型无法精确的表示某个数,除非用分数表示时,其分母为2的整数次幂。
  • C#的浮点类型有两种:float double,对应的数据类型为32位64位

    //TODO 具体的表示范围原理待考。
  • 十进制浮点类型:C#提供了128位精度的十进制浮点类型decimal,适合大而精确的计算,它保证范围内的所有十进制数都是精确的。

字面量(literal value)

就是字面值,一种常量,编译器会自动的将其转换成基本数据类型。另外C#编译器允许向非int数值类型赋值,前提是其值对于目标数据类型是合法的,但这只对字面量成立

  • 解析顺序:解析成能够存储该值的第一种数据类型。
    • 没有后缀的数值字面量:int uint long ulong
    • 具有后缀U的数值字面量: uint ulong
    • 具有后缀L的数值字面量: long ulong
    • 具有LU或UL后缀的数值字面量: ulong

布尔类型以及字符类型

  • 布尔类型:条件类型,大小为一个字节。
  • 字符类型:char表示16位字符,取值范围与ushort相同,但是char是一种独特类型。

字符串

零或多个字符组成的有限序列称为字符串。

  • 在字符串前面使用@可以指明转义序列不被处理,结果是一个逐字字符串字面量(verbatim string literal),不仅将反斜杠当做普通字符处理,还会逐字解释空白字符。
  • 字符串插值:在一个字符串字面量前加上一个$符号前缀,然后将表达式嵌入大括号中,这样做用于支持插入表达式。
    System.Console.WriteLine($"Your full name is {firstname} {lastname}")事实上这样写调用了string.Format()
  • usingusing static指令: 静态方法的调用通常为:命名空间前缀+类型名,通过using static+命名空间前缀+类型名来避免重复显式声明命名空间前缀+类型名。但其只对静态方法和属性有效。

关键字:nullvoid

  • null值只能赋给引用类型,指针类型与可空值类型
  • 赋值为null的变量已被设置,使其不指向任何位置,而未赋值的变量未被设置,此两者不能等同。
  • void
    1. 标记方法不返回任何数据
    2. 表示指针指向未知类型的存储位置。

隐式类型的局部变量:var

只要在声明变量的同时用确定类型的表达式初始化它,就可以不必显式的指定数据类型。
虽然允许使用var取代显式的数据类型,但是在数据类型已知的情况下,最好不要使用var,这是出于可读性以及正确性的考虑,除非右侧的数据类型十分明显,否则应避免使用var类型。

  • 匿名类型:匿名类型是在方法内部动态声明的数据类型,而不是显式的类定义来声明的。
  • 通过var,可以将匿名类型的实例赋给隐式类型的局部变量:以获得更少数据元素的功能联合使用。

    var patent1 =
        new { Title = "bifocals",
        YearOfPublication = "1784" };

类型分类

所有类型都可以归为值类型或引用类型,它们的区别在于复制方式:值类型的数据总是进行值复制,引用类型的数据总是进行引用复制。

值类型

猜你喜欢

转载自www.cnblogs.com/zhang-mo/p/9154922.html