8位有符号的整数 7 7
sbyte System.SByte –128~127 (–2~2–1)
16位有符号的整数 15 15
short System.Int16 –32 768~32 767 (–2 ~2 –1)
32位有符号的整数 31 31
int System.Int32 –2 147 483 648~2 147 483 647(–2 ~2 –1)
long System.Int64 64位有符号的整数 –9 223 372 036 854 775 808~9 223 372 036
854 775 807(–263~263–1)
8位无符号的整数 8
byte System.Byte 0~255(0~2–1)
16位无符号的整数 16
ushort System.Uint16 0~65535(0~2 –1)
32位无符号的整数 32
uint System.Uint32 0~4 294 967 295(0~2 –1)
ulong System.Uint64 64位无符号的整数 0~18 446 744 073 709 551 615(0~264–1)
Windows的将来版本将支持64位处理器,可以把更大的数据块移入移出内存,获得更快的处理速度。因此,C#支持8~64位的有符号和无符号的整数。
当然,Visual Basic开发人员会发现有许多类型名称是新的。C++和Java开发人员应注意:一些C#类型的名称与C++和Java类型一致,但其定义不同。例如,在C#中,int总是32位带符号的整数,而在C++中,int是带符号的整数,但其位数取决于平台(在Windows上是32位)。在C#中,所有的数据类型都以与平台无关的方式定义,以备将来C#和.NET迁移到其他平台上
byte是0~255(包括255)的标准8位类型。注意,在强调类型的安全性时,C#认为byte类型和char类型完全不同,它们之间的编程转换必须显式写出。还要注意,与整数中的其他类型不同,byte 类型在默认状态下是无符号的,其有符号的版本有一个特殊的名称sbyte。
在.NET中,short不再很短,现在它有16位,Int类型更长,有32位。 long类型最长,有64位。所有整数类型的变量都能赋予十进制或十六进制的值,后者需要0x前缀:
long x = 0x12ab;
如果对一个整数是int、uint、long或是ulong没有任何显式的声明,则该变量默认为int类型。为了把键入的值指定为其他整数类型,可以在数字后面加上如下字符:
uint ui = 1234U;
long l = 1234L;
ulong ul = 1234UL;
也可以使用小写字母u和l,但后者会与整数1混淆。
2. 浮点类型
C#提供了许多整型数据类型,也支持浮点类型,如表2-2所示。C和C++程序员很熟悉它们。
表 2-2
名 称 CTS 类 型 说 明 位 数 范围(大致)
32位单精度浮点数 -45 38float System.Single 7 ±1.5 × 10 ~±3.4 × 10
64位双精度浮点数 -324 308double System.Double 15/16 ±5.0 × 10 ~±1.7 × 10
float 数据类型用于较小的浮点数,因为它要求的精度较低。double 数据类型比 float数据类型大,提供的精度也大一倍(15位)。
如果在代码中没有对某个非整数值(如 12.3)硬编码,则编译器一般假定该变量是double。如果想指定该值为float,可以在其后加上字符F(或f):
float f = 12.3F;
3. decimal类型
另外,decimal类型表示精度更高的浮点数,如表2-3所示。
表 2-3
名 称 CTS 类 型 说 明 位 数 范围(大致)
128位高精度十进制数 -28 28decimal System. 28 ±1.0×10 ~±7.9 × 10
Decimal 表示法
37 第Ⅰ部分 C# 语 言
CTS和C#一个重要的优点是提供了一种专用类型进行财务计算,这就是decimal类型,使用decimal类型提供的28位的方式取决于用户。换言之,可以用较大的精确度(带有美分)来表示较小的美元值,也可以在小数部分用更多的舍入来表示较大的美元值。但应注意,decimal类型不是基本类型,所以在计算时使用该类型会有性能损失。
要把数字指定为decimal类型,而不是double、 float或整型,可以在数字的后面加上字符M(或m),如下所示。
decimal d = 12.30M;
4. bool类型
C#的 bool 类型用于包含布尔值true或false,如表2-4所示。
表 2-4
名 称 CTS 类 型 值
bool System.Boolean true或false
bool值和整数值不能互换。如果变量(或函数的返回类型)声明为bool类型,就只能使用值true或false。如果试图使用0表示false,非0值表示true,就会出错。
5. 字符类型
为了保存单个字符的值,C#支持char数据类型,如表2-5所示。
表 2-5
名 称 CTS 类 型 值
char System.Char 表示一个16位的(Unicode)字符
虽然这个数据类型在表面上类似于C和C++中的char类型,但它们有重大区别。C++的char表示一个8位字符,而C#的char包含16位。其部分原因是不允许在char类型与8位byte类型之间进行隐式转换。
尽管8位足够编码英语中的每个字符和数字0~9了,但它们不够编码更大的符号系统中的每个字符(例如中文)。为了面向全世界,计算机行业正在从8位字符集转向16位的Unicode模式,ASCII编码是Unicode的一个子集。
char类型的字面量是用单引号括起来的,例如'A'。如果把字符放在双引号中,编译器会把它看作是字符串,从而产生错误。
除了把 char 表示为字符字面量之外,还可以用 4 位十六进制的 Unicode 值(例如'\u0041'),带有数据类型转换的整数值(例如(char)65),或十六进制数('\x0041')表示它们。它们还可以用转义序列表示,如表2-6所示。
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · The instance of entity type ‘Customer’ cannot be tracked because another instance with the same key value for {‘Id’} is already being tracked.
- · .NET8实时更新nginx ip地址归属地
- · 解决.NET Blazor子组件不刷新问题
- · .NET8如何在普通类库中引用 Microsoft.AspNetCore
- · .NET8 Mysql SSL error
- · ASP.NET Core MVC的Razor视图渲染中文乱码的问题
- · .NETCORE 依赖注入服务生命周期
- · asp.net zero改mysql
- · .NET5面试汇总
- · .Net连接Mysql数据库的Convert Zero Datetime日期问题
- · vue使用element-ui中的Message 、MessageBox 、Notification
- · Asp.Net Core Filter 深入浅出的那些事-AOP