C#中数据类型与其他语言中的数据类型之间的对应关系
昨天调试了半天的一个错误,是从bmp中把灰度值转化为高度信息,是从一个C++的代码往C#中去转换,cpp代码中用了一个char* 的指针来存放位图数据。我在用C#的时候并没有过多的考虑,也用了char *,结果一直都出错。搞了一个小时也没找到原因。后来查了一下发现居然是类型之间的对应关系有误。发现这个的原因是凑巧的。我原想把char* 搞成 unsign char*, 结果居然没有找到。在寻找的过程中,在MSDN中找到了这个表,解决了那个问题。
下面请看:
下表列出了 .NET Framework 提供的一些值类型,简要描述了每个类型,并指示 Visual Basic、C# 和 C++ 中的相应类型。表中还包括 Object 和 String 类的项,这些项在许多语言中都有相应的关键字。
类别 | 类名 | 说明 | Visual Basic 数据类型 | C# 数据类型 | C++ 数据类型 | JScript 数据类型 |
---|---|---|---|---|---|---|
整数 |
Byte |
8 位的无符号整数。 |
Byte |
byte |
char |
Byte |
|
SByte |
8 位的有符号整数。 不符合 CLS。 |
SByte |
sbyte |
signed char |
SByte |
|
Int16 |
16 位的有符号整数。 |
Short |
short |
short |
short |
|
Int32 |
32 位的有符号整数。 |
Integer |
int |
int - 或 - long |
int |
|
Int64 |
64 位的有符号整数。 |
Long |
long |
__int64 |
long |
|
UInt16 |
16 位无符号整数。 不符合 CLS。 |
UShort |
ushort |
unsigned short |
UInt16 |
|
UInt32 |
32 位无符号整数。 不符合 CLS。 |
UInteger |
uint |
unsigned int - 或 - unsigned long |
UInt32 |
|
UInt64 |
64 位无符号整数。 不符合 CLS。 |
ULong |
ulong |
unsigned __int64 |
UInt64 |
浮点 |
Single |
单精度(32 位)浮点数字。 |
Single |
float |
float |
float |
|
Double |
双精度(64 位)浮点数字。 |
Double |
double |
double |
double |
逻辑运算 |
Boolean |
布尔值(真或假)。 |
Boolean |
bool |
bool |
bool |
其他 |
Char |
Unicode(16 位)字符。 |
Char |
char |
wchar_t |
char |
|
Decimal |
十进制(128 位)值。 |
Decimal |
decimal |
Decimal |
Decimal |
|
IntPtr |
大小取决于基础平台(32 位平台上为 32 位值,64 位平台上为 64 位值)的有符号整数。 |
IntPtr 无内置类型。 |
IntPtr 无内置类型。 |
IntPtr 无内置类型。 |
IntPtr |
|
UIntPtr |
大小取决于基础平台的无符号整数(32 位平台上为 32 位值,64 位平台上为 64 位值)。 不符合 CLS。 |
UIntPtr 无内置类型。 |
UIntPtr 无内置类型。 |
UIntPtr 无内置类型。 |
UIntPtr |
类对象 |
Object |
对象层次结构的根。 |
Object |
object |
Object* |
Object |
|
String |
Unicode 字符的不变的定长串。 |
String |
string |
String* |
String |