国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET中的數據類型的一些變化

2024-07-10 12:58:52
字體:
來源:轉載
供稿:網友
今天在做一個關于ic卡讀寫的程序,用到了一個ic卡讀寫器,有一個配套的dll動態庫和一些庫函數的說明,但是調試的時候總是會遇到一些奇怪的現象。vb6的示例中可以的操作,在我的程序中就會出現“未將對象引用設置到對象的實例”等等錯誤。折騰了半天也沒有什么進展。后來用.net的升級向導將那個vb6的實力程序升級,發現模塊中函數的聲明有一些變化。

vb6中聲明:

declare function srd_45d041 lib "mwic_32.dll" (byval icdev as long, byval page as integer, byval offset as integer, byval le as long, byval data_buffer$) as integer

升級后.net的聲明: declare function srd_45d041 lib "mwic_32.dll" (byval icdev as integer, byval page as short, byval offset as short, byval le as integer, byval data_buffer as string) as short  vb6中long類型在.net中變成了integer,而integer變成了short。就這么一點小小的問題搞得我郁悶了半天。把程序調試通過以后,我查了一下msdn library,發現.net的數據類型和vb6的存在一些變化。具體的可以看下面這兩張表。

表1 vb6中的數據類型

數據類型

存儲空間大小

范圍

byte

1 個字節

0 到 255

boolean

2 個字節

true 或 false

integer

2 個字節

-32,768 到 32,767

long
(長整型)

4 個字節

-2,147,483,648 到 2,147,483,647

single
(單精度浮點型)

4 個字節

負數時從 -3.402823e38 到 -1.401298e-45;正數時從 1.401298e-45 到 3.402823e38

double
(雙精度浮點型)

8 個字節

負數時從 -1.79769313486232e308 到
-4.94065645841247e-324;正數時從4.94065645841247e-324 到 1.79769313486232e308

currency
(變比整型)

8 個字節

從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807

decimal

14 個字節

沒有小數點時為 +/-79,228,162,514,264,337,593,543,950,335,而小數點右邊有 28 位數時為 +/-7.9228162514264337593543950335;最小的非零值為 +/-0.0000000000000000000000000001

date

8 個字節

100 年 1 月 1 日 到 9999 年 12 月 31 日

object

4 個字節

任何 object 引用

string
(變長)

10 字節加字符串長度

0 到大約 20 億

string
(定長)

字符串長度

1 到大約 65,400

variant
(數字)

16 個字節

任何數字值,最大可達 double 的范圍

variant
(字符)

22 個字節加字符串長度

與變長 string 有相同的范圍

用戶自定義
(利用 type)

所有元素所需數目

每個元素的范圍與它本身的數據類型的范圍相同。

 表2  vb.net中的數據類型

visual basic 類型

公共語言運行庫類型結構

名義存儲分配

取值范圍

boolean

system.boolean

2 個字節

true 或 false

byte

system.byte

1 個字節

0 到 255(無符號)。

char

system.char

2 個字節

0 到 65535(無符號)。

date

system.datetime

8 個字節

0001 年 1 月 1 日凌晨 0:00:00 到 9999 年 12 月 31 日晚上 11:59:59。

decimal

system.decimal

16 個字節

0 到 +/-79,228,162,514,264,337,593,543,950,335 之間不帶小數點的數;
0 到 +/-7.9228162514264337593543950335 之間帶 28 位小數的數;最小非零數為
+/-0.0000000000000000000000000001 (+/-1e-28)。

double
(雙精度浮點型)

system.double

8 個字節

負值取值范圍為 -1.79769313486231570e+308 到 -4.94065645841246544e-324;正值取值范圍為 4.94065645841246544e-324 到 1.79769313486231570e+308。

integer

system.int32

4 個字節

-2,147,483,648 到 2,147,483,647。

long
(長整型)

system.int64

8 個字節

-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

short

system.int16

2 個字節

-32,768 到 32,767。

object

system.object(類)

4 個字節

任何類型都可以存儲在 object 類型的變量中。

single
(單精度浮點型)

system.single

4 個字節

負值取值范圍為 -3.4028235e+38 到 -1.401298e-45;正值取值范圍為 1.401298e-45 到 3.4028235e+38。

string
(變長)

system.string(類)

取決于實現平臺

0 到大約 20 億個 unicode 字符。

用戶定義的類型
(結構)

(從system.valuetype繼承)

取決于實現平臺

結構中的每個成員都有由自身數據類型決定的取值范圍,并與其他成員的取值范圍無關。

 從兩張表中可以清楚地看到vb6中的integer類型是2個字節長度的,long是4個字節長度的。在.net中interger變成了4個字節,long是8個字節。多了一個short類型,是2個字節的。數據類型的字長不一樣導致了調用庫函數時數據類型轉化的沖突,所以也就出現了很多奇怪的問題,不過現在問題順利解決,希望這些經驗能對.net的初學者有一些幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清新县| 安龙县| 竹溪县| 睢宁县| 长沙县| 焉耆| 木兰县| 揭阳市| 静安区| 菏泽市| 老河口市| 晋宁县| 呼图壁县| 沁源县| 辽源市| 德安县| 五华县| 崇义县| 呼玛县| 黄石市| 宜君县| 马山县| 万盛区| 辉南县| 奎屯市| 梅州市| 习水县| 五家渠市| 从江县| 垦利县| 峨眉山市| 哈尔滨市| 盐津县| 德钦县| 凤山县| 定南县| 灵山县| 抚宁县| 阜南县| 武夷山市| 绥滨县|