a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 76|回复: 0

[Visual Basic] 在VB2005中使用零长度数组

[复制链接]
发表于 2012-7-31 22:10:12 | 显示全部楼层 |阅读模式
在实际的编程中,数组是运用很多的对象。象Array,List等都是对数组的一种封装。4 ~* `8 N  n) d; D$ ?
  我们看看下面两种的定义方法,能看出他们的区别吗?
0 k8 @/ ?+ N8 Q" S6 w  Dim tB1() As Byte8 G2 n3 K' i1 f* y  a% [. j) c; L
  Dim tB2() As Byte = {}
& O3 F3 i& n' S, b! U, f2 c  这两种都是定义一个字节数组,且数组里都没有元素。
1 Z' @8 r% h  h8 P1 l3 G) W) ^1 V  不过下面两句话就能看出区别了。
" o8 O4 W3 a5 t0 _) `  Debug.Print(tB1 Is Nothing)# p/ G8 m% n, T' u- S9 ]
  Debug.Print(tB2 Is Nothing)
) D. K8 w- r0 i) T9 V  第一句得到的结果是True,第二局得到的结果是False。说明,tB1是数组但没有初始化过,等价于Nothing,tB2是数组,虽然没有元素,但是初始化过,和Nothing不等价,你可以访问tB2的其他属性,如Length,得到的是0,表明是一个空数组。而访问tB1的其他属性,如Length,就会报错。( o: l* }$ p8 V. j: |: l. R
  空数组和未初始化的数组在很多地方还是有区别的。
1 P3 m4 E; C$ n( c' J3 G  例如:# u+ \! ]# m0 e6 W2 B
  Debug.Print(System.Text.Encoding.Default.GetString(tB1))
% E) N! H+ n) Q) U; t8 m  Debug.Print(System.Text.Encoding.Default.GetString(tB2))* _8 c  D$ i% q: g8 U6 ]
  虽然tB1和tB2中都没有元素,但是由于tB1没有初始化,系统会抛出一个异常。而tB2虽然没有元素,但是表示一个0元素的数组,系统不会抛出异常,返回一个空字符串。
3 u* q* A6 {3 f$ T* J2 N% p$ C  从这个能看出来,Nothing和0元素的数组还是有区别,这个是我们容易忽视的地方。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 06:48 , Processed in 0.426882 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表