首页 理论教育 C#编程CreateInstance方法

C#编程CreateInstance方法

时间:2023-10-22 理论教育 版权反馈
【摘要】:在C#开发应用中,CreateInstance()方法主要具有如下两个作用。2)通过CreateInstance()方法创建一个新的数组zz。本实例的功能是,输出显示指定数组内的数据,并使用CreateInstance()输出此数组内指定长度的数据。图9-5 实例执行结果图9-6 实例执行结果图9-7 实例执行结果多学一招CreateInstance()方法有许多重载版本,可以创建多维数组和不基于0的数组。

C#编程CreateInstance方法

CreateInstance()方法能够初始化项目数据的新实例。在C#开发应用中,CreateInstance()方法主要具有如下两个作用。

1.创建下限不为0的数组

在大多情况下,C#数组下限的默认值为0。但是通过System.Array类提供的方法CreateInstance(),可以创建指定的动态数组,也可以创建下限不为0的数组,从而重新声明了指定数组的大小。

实例32:使用CreateInstance()方法创建下限不为0数组

本实例将使用CreateInstance()方法创建下限不为0数组。本实例保存在“光盘:\daima\9”文件夹内,项目名为gaibian。本实例的功能是输出显示CreateInstance()方法创建的下限不为0数组数据。实例文件的主要代码如下:

978-7-111-36370-5-Part02-213.jpg

978-7-111-36370-5-Part02-214.jpg

上述实例代码的设计流程如下。

1)分别定义二维数组mm和nn。

2)通过CreateInstance()方法创建一个新的数组zz。

3)使用for语句逐一读取数组内的数据,将zz进行初始化处理。

4)输出显示数组的维数、下限和上限。

5)输出显示数组内的数据。

执行后将输出显示指定数组内的数据,并显示数组的维数、下限和上限,如图9-4所示。

978-7-111-36370-5-Part02-215.jpg

图9-4 实例执行结果

多学一招

Array类是一个抽象类,所以不能使用构造函数来创建数组。但除了可以使用C#语法创建数组实例之外,还可以使用静态方法CreateInstance()创建数组。如果事先不知道元素的类型,就可以使用该静态方法,因为类型可以作为Type对象传送给CreateInstance()方法。

2.重定义数组

CreateInstance()方法的功能是,动态创建在编译时无法确定元素类型和维数的数组,即重新定义数组的大小。

实例33:通过CreateInstance()方法重新定义数组的大小

下面将通过一个简单的实例来说明,通过CreateInstance()方法重新定义数组的大小的流程。本实例保存在“光盘:\daima\9”文件夹内,项目名为redefine。本实例的功能是,输出显示指定数组内的数据,并使用CreateInstance()输出此数组内指定长度的数据。实例文件的主要代码如下:(www.xing528.com)

978-7-111-36370-5-Part02-216.jpg

978-7-111-36370-5-Part02-217.jpg

上述实例代码的设计流程如下。

1)定义一维数组array,并在其中存储10个数字。

2)定义函数shuchu(),输出指定长度的数组内数据。

3)定义函数ReDim(),设置数组内的数据输出长度。

4)逐一输出此数组内指定长度的数据。

执行后将首先输出显示指定数组内的数据,如图9-5所示;当按〈Enter〉键后将显示长度为12的数组数据,如图9-6所示;当再次按〈Enter〉键后将显示长度为4的数组数据,如图9-7所示。

在上述实例中,如果设置的长度超出了数组内数据的长度,则将超出数据设置为0显示。

978-7-111-36370-5-Part02-218.jpg

图9-5 实例执行结果

978-7-111-36370-5-Part02-219.jpg

图9-6 实例执行结果

978-7-111-36370-5-Part02-220.jpg

图9-7 实例执行结果

多学一招

CreateInstance()方法有许多重载版本,可以创建多维数组和不基于0的数组。例如在下面的代码中,创建了一个包含2×3个元素的二维数组。第一维基于1,第二维基于0:

978-7-111-36370-5-Part02-221.jpg

SetValue()方法用于设置数组的元素,其参数是每一维的索引

978-7-111-36370-5-Part02-222.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈