昨天调试了半天的一个错误,是从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 |