昨天調試了半天的一個錯誤,是從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 |