C#之基元类型,为啥String a="123" 和string a="123"一样可以正常工作?
编译器直接支持的数据类型称为基元类型(primitive type)。由于某些数据类型如此常用,许多编辑器允许代码以简化语法来操纵它们。
最开始编程的时候特别疑惑,Int32 a=new Int32();可以用于定义一个32位整型变量。使用int b=0;也可以定义一个整型变量。咋有的书上用Int32,有的书上用int呢,我该用哪种?他们有啥区别和关系么?
实际上这是编辑器为了让开发人员使用这些常用数据类型时更加方便而内置的一套数据类型。可以认为C#编辑器自动假定所有源代码文件都添加如下的using指令 using int=System.Int32;
从一开始就使用基元类型,而不知道对应的映射的FCL(Framework类库)的数据类型,工作中会有一些困扰。例如:
- int类型变量代表的位数时多少,有人可能认为跟操作系统位数有关,但是实际上无论在32位还是64位操作系统上运行都代表32位整数,如果你清楚int对应FCL中的Syste.Int32 是不是就不那么容易混淆了。
- 还有FCL中的许多方法都将类型名作为方法名的一部分。如,System.Convert类型的方法包括ToBoolean,ToInt32,ToSingle等,float val = Convert.ToSingle("13.4");这样的写法看着就有些奇怪,如果携程 SIngle val=Convert.ToSingle("13.4");就更自然了。
这里列举出C#基元类型与对应的FCL类型
C#基元类型 | FCL类型 | 说明 | |
sbyte | System.SByte | 有符号8位值 | |
byte | System.Byte | 无符号8位值 | |
short | System.Int16 | 有符号16位值 | |
ushort | System.UInt16 | 无符号16位值 | |
int | System.Int32 | 有符号32位值 | |
uint | System.UInt32 | 无符号32位值 | |
long | System.Int62 | 有符号64位值 | |
ulong | System.UInt64 | 无符号64位值 | |
char | System.Char | 16位Unicode字符 | |
float | System.Single | 32位浮点值 | |
double | System.Double | 64位浮点值 | |
bool | System.Boolean | true/false值 | |
decimal | System.Decimal | 128位高精度浮点值,常用于不容许涉入误差的金融计算。 | |
string | System.String | 字符串(可以理解为字符数组) | |
object | System.Object | 所有类型的基类型 |
本文来自博客园,作者:业荒于嬉,转载请注明原文链接:https://www.cnblogs.com/FreeLoopPowter/p/15919282.html
如内容对您有所帮助,还请不吝推荐一下!