VB.Net学习笔记(数组)

原创 2004年05月17日 18:19:00

数组

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

VB.Net中数组有了很大的改变。首先象在简单赋值章节描述的:数组的索引编号总是从零开始;并且数组的元素类型是强类型,即数组中所包含的每一个元素都必须是相同的类型。

Array对象

VB.Net中使用Dim iArr(5) As Int32这种语法表示的数组实际上是声明了一个Array对象的实例。Array对象是位于System命名空间中。这个对象提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。不过虽然Array 类是支持数组的语言实现的基类。但是,只有系统和编译器能够从 Array 类显式派生。用户应当使用语言提供的数组构造。Array对象提供了一些重要的属性和方法,来便于我们操作数组。

 

Array数组操作举例

        Dim iArr(5) As Int32 'iArr.Length=6

        Dim bArr(5, 5) As Boolean 'bArr.Rank=2,bArr.Length=36

 

 

        Array.Clear(iArr, 0, iArr.Length - 1)

 

        For i As Int32 = iArr.GetUpperBound(0) To 0 Step -1 'iArr.GetUpperBound(0)=5

            '数组的元素为

            iArr.SetValue(i, i)

        Next

 

        Array.Sort(iArr) '数组元素经过排序后为012345

 

        For i As Int32 = 0 To iArr.GetUpperBound(0)

            '输出数组元素

        Next

 

 

ArrayList对象

Ayyar的容量是固定的,VB.Net提供的ReDim语句实际上是利用了ArrayList对象的能力。ArrayListArray的复杂版本。ArrayList其实是把Array当作集合处理,当然就可以将容量根据需要进行自动扩展了。ArrayList既然是以集合的方式处理,所以它当然位于System. Collections 命名空间中了。

不过Array相对于ArrayList来讲也有其优势:Array可以有多个纬度,但ArrayList只可以有一个纬度。在Array的元素中值类型不需要进行装箱和卸箱的操作,所以在值类型方面,ArrayArrayList具有高的多的效率。(数据类型将在后期的类型章节描述。)

 

使用ArrayList对象更改Array对象容量大小举例

Dim iArr(5) As Int32

 

        For i As Int32 = 0 To iArr.GetUpperBound(0)

            iArr.SetValue(i, i) '0,1,2,3,4,5

        Next

 

        Dim iArrList As New System.Collections.ArrayList(iArr) 'iArrList.Count=6

        For i As Int32 = 6 To 10

            iArrList.Add(i)

        Next 'iArrList.Count=11

        iArrList.Insert(5, 99) 'iArrList.Count=12

        iArrList.Capacity = 100 'iArrList.Count=12

        iArrList.TrimToSize() 'iArrList.Count=12

        iArr = iArrList.ToArray(GetType(Int32))

        For i As Int32 = 0 To iArr.GetUpperBound(0) 'iArr.GetUpperBound(0)=11

            '输出:0,1,2,3,4,99,5,6,7,8,9,10

        Next

 

数组声明指定需要一个数据类型(可将数组声明为任何基本数据类型、结构或者对象类),数组的所有元素必须都是该类型数据。但是如果数据类型是 Object,则单个数组元素可以包含各种类型的数据(如对象、字符串、数字等等)。

VB.net学习笔记(八)重载与共享

gg
  • dzweather
  • dzweather
  • 2013年08月04日 14:31
  • 5505

VB.net学习笔记(十)继承

Public Class Person Public Property Name() As String Public Property BirthDate() As Date En...
  • dzweather
  • dzweather
  • 2013年08月10日 11:45
  • 9339

VB.net学习笔记(六)VB.net的对象

Dim a As theClass '1,用两语句来创建实例,先声明再实例化 a = New theClass() Dim b As New theClass()...
  • dzweather
  • dzweather
  • 2013年07月30日 21:34
  • 6276

VB.net学习笔记(十三)抽象类、多接口

Public MustInherit Class Person '只能被继承 Private mName As String Private mBirthDate As Date ...
  • dzweather
  • dzweather
  • 2013年08月15日 23:34
  • 6185

VB.net学习笔记(九)委托

Module Sort '声明委托。类似C++的函数指针类型 Public Delegate Function Compare(ByVal v1 As Object, ByVal v2 As ...
  • dzweather
  • dzweather
  • 2013年08月05日 20:53
  • 4957

VB.net学习笔记(二十六)线程的坎坷人生

线程可以处于一个或多个状态,由ThreadState枚举表示。使用Thread类中的一些方法后状态会随之变化。枚举成员如下:         线程的生存期如下:   一、线程睡眠    ...
  • dzweather
  • dzweather
  • 2016年06月07日 17:10
  • 3062

VB.net学习笔记(五)数据类型-引用类型(类)

Dim a As Object a = Me CType(a, Form).Text = "本窗体的标题显示在这里" Dim a As St...
  • dzweather
  • dzweather
  • 2013年07月24日 22:36
  • 4627

VB.net学习笔记(十二)继承中的构造、事件、共享方法、共享事件

Private mNames As Generic.Dictionary(Of NameType, String) Public Overloads Property Name(ByVal ...
  • dzweather
  • dzweather
  • 2013年08月13日 22:38
  • 5153

VB.net学习笔记(十五)继承与多接口练习

Public MustInherit Class Contact '只能作基类且不能实例化 Private mID As Guid = Guid.NewGuid Private mNa...
  • dzweather
  • dzweather
  • 2013年08月21日 22:57
  • 2168

VB.net学习笔记(十七)XAML

  • dzweather
  • dzweather
  • 2013年08月30日 20:12
  • 2851
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB.Net学习笔记(数组)
举报原因:
原因补充:

(最多只允许输入30个字)