C#数据类型

概述

  • 值类型:值类型直接包含数据
  • 引用类型:存储数据的引用,两个变量可能引用同一个对象(参考C++)

值类型

  • 简单类型:(有符号) sbyte,short,int,long /(无符号) byte,ushort,uint,ulong / (Unicode编码)char / (IEEE浮点) float,double / (128位高精度小数)decimal / bool
  • 枚举类型:enum E{…}
  • 结构类型:struct S{…}

C#中字符和字符串处理使用Unicode编码而不是Ascii码

枚举

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*本质是整数,每个元素的默认基础类型都是int*/
/*通过使用冒号指明另一种整数类型*/
/*下一个枚举值是上一个值+1*/
enum DayOfTime : long
{
Morning = 9,
Noon,
Afternoon
}

static void Main(string[] args)
{
DayOfTime d1;
d1 = DayOfTime.Noon;
}

结构

自定义的一种变量类型,因为是值类型所以使用时不用new

可以放变量和方法,除了静态变量,其他不能直接赋值

不能申明默认构造函数和析构函数

引用类型

  • 类类型:Unicode字符串string,class C{…}形式,最终基类object
  • 接口类型:interface I{…}
  • 数组类型:n维数组(n >= 1)
  • 委托类型:delegate TD(…)

通过new来生成的对象,都存在堆中

万物皆对象

值类型通过装箱和拆箱操作可以按对象来处理

1
2
3
int i = 123;
object o = i; //装箱
int j = (int)o; //拆箱