C# 6.0本质论(数据类型)

二、数据类型

  • 预定义类型
    • 8种整数类型、2种二进制浮点类型、十进制浮点类型、bool类型和char类型

2.1 基本数据类型

2.1.1 整数类型

在这里插入图片描述

  • 所有基本类型都有短名称和完整名称
    • 完整名称对应于BCL中的类型命名,在所有语言中是相同且唯一的
    • 短名称或缩写的关键字最终也是和完整名称生成相同的代码

2.1.2 浮点类型

  • float、double
    • 二进制浮点数,换算成分数的分母是二的倍数
    • 精度由有效数字的个数决定
      • float的有效数字为7
      • double的有效数字为15~16
    • 进行计算允许结果为特殊值;例如,除以0得到NaN,Not a Number

2.1.3 十进制浮点类型

  • decimal
    • 128位精度的十进制浮点数,范围相对小,在不溢出的情况下,精度完全正确
    • 后缀为M或者m

2.1.4 字面量

  • 小数自动转化为double类型,整数按大小转化为int或long
  • 标准格式说明符
    • 格式说明符 + 精度说明符
字符说明示例
C、c使用货币符号进行格式化
精度说明符:小数位数
Console.WriteLine("{0:C1}",12.5);//¥12.5
D、d精度说明符:输出字符串中的最少位数,如果实际数字位数更少,在左边以0填充Console.WriteLine("{0:D4}",12);//0012
F、f精度说明符:小数的位数Console.WriteLine("{0:F4}",12.345678);//12.3457
X、x转化为十六进制字符串形式;精度说明符:输出字符串中的最少位数Console.WriteLine("{0:x}",42)//0x2A
R、r字面量转为string时,会按double精度进行显示,精度超出部分会被舍去,使用R格式说明符能保证原样转化;精度说明符:忽略Console.WriteLine("{0:R}",1.618033988749895);
  • 负数补码回值
           按0取值,结果减1;

2.2 字符串

  • string、String
    • string是关键字、String是类,转化为CIL都是System.String

2.2.1 逐字字符串字面量

  • @" … "
    • 转义序列不被处理,除了代表双引号的转义外。

2.2.2 字符串插值

  • $" {…} "
    • 可以和逐字字符串字面量组合使用,例如$@" … {…}"
    • 是string.Format(string format, string str)的简写
    • 连续两个大括号表明大括号不是引入格式模板
      • $"{{ { price:C2} }}" ----> { $1,234.56 }

2.2.3 字符串方法

  • string.Format( format ,args);
    • 格式字符串定义输出格式
      • 索引占位符
        • 必须对应一个参数
    • 要插入的参数,即格式项
  • string.Concat( str0, str1)
  • string.Compare( strA, strB, ignoreCase )

2.2.4 字符串格式

  • string.Format( “{0,20:C2}” , price )
    • 20个字符长

2.2.5 换行符

  • System.Environment.NewLine
    • 消除平台差异,window换行\r\n,Linux为\n

2.2.6 字符串不可变

2.3 匿名类型

  • 隐式局部变量
    • var
      • 根据实际数据类型进行判断
      • 在声明的同时必须用确定类型的表达式进行初始化
      • 作用:支持匿名类型
  • 匿名类型
    • 类型未知
      • 如new{ Title=“efe”,YearofPublication=“1877”},其中,Ttile和YearofPublication的类型都未显示指出。
    • var people=new { property1=value1,property2=value2 }或者var people=new { person.property1,person.property2 }
      • 编译器自动生成具有相同字段和属性的类型,并将显示指出的名称或赋值所用的属性作为相应的属性名称

2.4 可空修饰符

  • 值类型
    • 添加可空修饰符后可以存储null,例如 int? a
    • 作用:数据库表中值类型允许为null

2.5 数据类型之间的转换

2.5.1 显式类型

  • 从大容量类型转换为小容量类型
    • 使用转型操作符
      • (int) longNumber
    • 程序员负责确保数据转换成功
      • 运行时可能引发异常
  • 类型溢出
    • 占用符号位导致数据为负值
    • checked、unchecked
      • checked {…} 或者编译时使用checked选项
        • 表示值溢出时抛出OverflowException
      • unchecked{ … }
        • 表示不抛出异常,默认为unchecked。
  • 不存在从数值类型到布尔类型的有效转型
    • 防止发生if(x=5)编译通过的情况

2.5.2 隐式转型

  • 从小容量类型转换为大容量类型
    • 不要求使用转型操作符

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

  • 字符串转数值类型
    • 相应类型的Parse() 方法
    • bool TryParse(… ,out …)
      • 当转换失败时不会抛出异常,而是返回false
  • System.Convert
    • 支持基本类型之间的互相转化

2.6 数组

2.6.1 数组大小

  • 不提供字面量就必须指定数组大小
  • 可以是变量,在运行时能计算得到确定值

2.6.2 多维数组与交错数组

  • 多维数组
    • int[ , ]
      • 数组大小必须一致
  • 交错数组
    • int[][]
      • 数组的数组
      • int[]表示数据类型,后面的[]表示数组
      • 数组大小可以不一致
    • 必须为内部的每个数组都创建数组实例,即必须使用new操作符
      • int[][] cells = { new int[]{1,2,3}, new int[]{1,2}, new int[]{1} }

2.6.3 Length

  • 多维数组的长度为所有元素的总个数
  • 交错数组的长度为最外层数组的长度

2.6.4 数组方法

  • 静态方法
    • System.Array.Sort( array )
    • System.Array.Reverse( array )
    • System.Array.Clear( array )
    • System.Array.BinarySearch( array, searchString )
      • 针对有序数组进行查找
    • System.Array.Resize()
      • 重建数组,并将所哦有元素复制到新数组中
  • 实例方法
    • GetLength()
      • 获取指定维度上的长度
    • Clone()

2.6.5 字符串作为数组使用

  • 访问string类型的变量类似于访问字符数组
    • char s = Str[0]
  • 将字符串转化为字符数组
    • ToCharArray()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#5.0本质论第四版,高清扫描的,对C#5.0技术讲的比较详细,第1章 C#概述 1 1.1 Hello,World 1 1.2 C#语法基础 3 1.2.1 C#关键字 3 1.2.2 标识符 4 1.2.3 类型定义 5 1.2.4 Main 6 1.2.5 语句和语句分隔符 7 1.2.6 空白 8 1.2.7 使用变量 8 1.2.8 数据类型 9 1.2.9 变量的声明 9 1.2.10 变量的赋值 10 1.2.11 变量的使用 11 1.3 控制台输入和输出 11 1.3.1 从控制台获取输入 11 1.3.2 将输出写入控制台 12 1.3.3 注释 14 1.3.4 托管执行和公共语言基础结构 16 1.3.5 C#和.NET版本 17 1.3.6 CIL和ILDASM 18 1.4 小结 20 第2章 数据类型 21 2.1 基本数值类型 21 2.1.1 整数类型 22 2.1.2 浮点类型 23 2.1.3 decimal类型 23 2.1.4 字面值 24 2.2 更多基本类型 27 2.2.1 布尔类型 27 2.2.2 字符类型 27 2.2.3 字符串 29 2.3 null和void 34 2.3.1 null 34 2.3.2 void 35 2.4 类型的分类 37 2.4.1 值类型 37 2.4.2 引用类型 37 2.5 可空修饰符 38 2.6 数据类型之间的转换 39 2.6.1 显式转型 39 2.6.2 隐式转型 41 2.6.3 不使用转型操作符的类型转换 42 2.7 数组 43 2.7.1 数组的声明 44 2.7.2 数组的实例化和赋值 45 2.7.3 数组的使用 48 2.7.4 字符串作为数组使用 52 2.7.5 常见数组错误 53 2.8 小结 55 第3章 操作符和控制流 57 3.1 操作符 57 3.1.1 一元操作符正和负 58 3.1.2 二元算术操作符 58 3.1.3 复合赋值操作符 64 3.1.4 递增和递减操作符 65 3.1.5 常量表达式和常量符号 68 3.2 控制流程概述 69 3.2.1 if语句 70 3.2.2 嵌套if 71 3.3 代码块 73 3.4 代码块、作用域和声明空间 74 3.5 布尔表达式 76 3.5.1 关系操作符和相等性操作符 77 3.5.2 逻辑布尔操作符 77 3.5.3 逻辑求反操作符 78 3.5.4 条件操作符 79 3.5.5 空接合操作符 80 3.6 按位操作符 80 3.6.1 移位操作符 81 3.6.2 按位操作符 82 3.6.3 按位赋值操作符 83 3.6.4 按位取反操作符 84 3.7 控制流语句(续) 84 3.7.1 while和do while循环 84 3.7.2 for循环 86 3.7.3 foreach循环 88 3.7.4 switch语句 90 3.8 跳转语句 92 3.8.1 break语句 92 3.8.2 continue语句 94 3.8.3 goto语句 95 3.9 C#预处理指令 97 3.9.1 排除和包含代码 98 3.9.2 定义预处理符号 98 3.9.3 生成错误和警告 99 3.9.4 关闭警告消息 99 3.9.5 nowarn:选项 99 3.9.6 指定行号 100 3.9.7 可视编辑器提示 100 3.10 小结 101 第4章 方法和参数 103 4.1 方法的调用 104 4.1.1 命名空间 105 4.1.2 类型名称 106 4.1.3 作用域 107 4.1.4 方法名称 107 4.1.5 形参和实参 107 4.1.6 方法返回值 107 4.1.7 语句与方法调用的比较 108 4.2 方法的声明 108 4.2.1 形式参数声明 109 4.2.2 方法返回类型声明 110 4.3 using指令 111 4.4 Main()的返回值和参数 114 4.5 方法的参数 116 4.5.1 值参数 116 4.5.2 引用参数(ref) 117 4.5.3 输出参数(out) 118 4.5.4 参数数组 120 4.6 递归 122 4.7 方法重载 124 4.8 可选参数 126 4.9 用异常实现基本错误处理 129 4.9.1 捕捉错误 130 4.9.2 使用throw语句报告错误 136 4.10 小结 138 第5章 类 139 5.1 类的定义和实例化 141 5.2 实例字段 144 5.2.1 实例字段的声明 144 5.2.2 实例字段的访问 144 5.3 实例方法 145 5.4 使用this关键字 146 5.5 访问修饰符 151 5.6 属性 153

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值