c#中的数据类型、枚举型以及各值类型的使用环境

发布于:2023-02-03 ⋅ 阅读:(452) ⋅ 点赞:(0)

记录写下实际开发环境中,c#的那么多类型,什么情况下使用更好的类型可以到达优化的目的,记录常用类型。


目录

数据类型

一、值类型

1.c#的整形

2.浮点型

3.字符型

二、引用类型

1.枚举型enum

总结



数据类型

C#中有两种数据类型,分别是值类型与引用类型。

一、值类型

什么是值类型

值类型

我们看看一个小案列

            int a = 1;
            int b = a;
            b = 2;
            Console.WriteLine(a);
            Console.ReadKey();
            //结果a为1

为什么会这样,因为他就是值类型,后面我们通过调试来看看他的执行流程,发生了什么改变。

可以看见b变量是和a一样的值。当前是引用了a变量的内存地址。 

我们把变量a拉过去可以看见他的内存地址 ,也把b变量拉过去对比,可以看见是一样的,我们继续往下执行。

可以看见b发生了变化,但a没有变,现在我们在看看他们的内存地址

此时b内存地址更变了,可以发现,没有给b进行赋值,输出的地址为a的值,当我们给b赋值时,他创建了一个副本新内存地址。他们的关系,在没有赋值前b是引用类型。

值类型是在赋值时被确定的,他在内存当中,栈里存的是值,栈的速度快,堆的速度慢,但栈空间小,所以值类型都有自己的上限,如int类型,32位,但他的取值范围是-2147483648到2147483648,当超出这个范围就会报范围错误。有时候正数突然变成负数了,因为正数的极限是负数,比如2147483648再加1,他就变成了一个负值。

所以当需要更长的数值时可以用long,但还需要比long跟长,一般我们使用字符串。

回到主题

1.c#的整形

C#中整形又分为byte 、short 、int、long 类型,并且定义了有符号数和无符号数

byte 8 位无符号整数 0 到 255 0
int 32 位有符号整数类型 -2,147,483,648 到 2,147,483,647 0
long 64 位有符号整数类型 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 0L
sbyte 8 位有符号整数类型 -128 到 127 0
short 16 位有符号整数类型 -32,768 到 32,767 0
uint 32 位无符号整数类型 0 到 4,294,967,295 0
ulong 64 位无符号整数类型 0 到 18,446,744,073,709,551,615 0
ushort 16 位无符号整数类型 0 到 65,535 0

byte这个类型常用于文档操作,io流那一块,还有加密,单位B。

还有一个更小的单位:bit,单位b,二进制的一位,就是1b,而8b=1B,这个单位常用于读取字节,标识删除和有效。如状态只有0 1,就可以用bit

short比较少用,一般用于比较长的状态。

用得最多的就是int和long了。

2.浮点型

C#将浮点型分为单精度浮点型和双精度浮点型。

decimal 128 位精确的十进制值,28-29 有效位数 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M
double 64 位双精度浮点型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 0.0D
float 32 位单精度浮点型 -3.4 x 1038 到 + 3.4 x 1038 0.0F

C#默认的浮点型是double 类型,如果需要使用单精度浮点型,则需要在数值后面加上f或者F来表示

decimal类型,它是C#中精度最高的浮点类型,它占16个字节, decimal类型专门用于进行财务计算,在数字后面加上字符M或m,表示是把这个数字指定为decimal类型。除了在数字后面加大写M还可以在数字前面直接加decimal,如果是小数的话,小数最后一位是,就不会显示出来,如果是整数则会显示出来。

3.字符型

char 16 位 Unicode 字符 U +0000 到 U +ffff '\0'

字符型只能存放一个字符,并且他只能用单引号,因为他固定使用2个字节,可以存放一个汉字。如果使用双引号则是字符串,他只能使用单引号来存储。

双引号与单引号有什么区别:双引号是字符串,单引号表示字符

字符串和字符之间有什么区别:字符他只占用一个字节,字符串最少两个。

使用场景:char型的范围是-128~+127,虽然是字符但不一定就必须存字符,他的空间比较小,比如做小功能,他计算的最大结果没有超出127,那么用char是最好的,如果用int消耗的空间会更多。


二、引用类型

1.枚举型enum

枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。

C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

声明枚举的一般语法:他需要在类的里面且方法外面

enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

调用

int x=(int)Day.Sun;

int y = (int)Day.Sat;

Console.WriteLine("x:{0},y:{1}", x,y);//输出0,6,因为第一位0开始,最后一位位置为6

通常枚举用在我们需要用整形来判断某些操作时,我们可以给整形数字进行命名,这个就可以用到枚举。


总结

以上就是基本常用值类型的使用总结,什么情况下用什么,一些比较少用的总结出来。