在C#中,数组是一组用通用名称引用的相似类型的变量。每个数据项都称为数组的元素。元素的数据类型可以是任何有效的数据类型,例如char,int,float等,并且元素存储在连续的位置。
ArrayList表示可以单独索引的对象的有序集合。基本上,它是数组的替代方法。它允许动态分配内存,添加,搜索和排序列表中的项目。
下面是将ArrayList转换为Array的两种方法:
方法1:将ArrayList转换为对象数组
句法:
public virtual object[] ToArray ();
解释:
- 它将ArrayList的元素复制到新的Object数组。
- 它返回一个Object数组,其中包含ArrayList元素的副本。
示例:在下面的程序中, mylist是ArrayList,我们在其中添加了7个项目,它们是工作日的名称。然后,我们将创建一个对象数组obj1,并使用带有mylist的ToArray方法,将Arraylist元素分配给该对象数组。最后,使用foreach循环可以打印所需的转换数组。
// C# program to illustrate ToArray() Method
using System;
using System.Collections;
class GFG {
// Main Method
public static void Main()
{
// Create and initalizing ArrayList
ArrayList mylist = new ArrayList(7);
mylist.Add("Monday");
mylist.Add("Tuesday");
mylist.Add("Wednesday");
mylist.Add("Thursday");
mylist.Add("Friday");
mylist.Add("Saturday");
mylist.Add("Sunday");
// Copy the data of Arraylist into
// the object Array Using ToArray()
// method
object[] obj1 = mylist.ToArray();
foreach(string st in obj1)
{
Console.WriteLine(st);
}
}
}
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
方法2:将ArrayList转换为指定类型的数组
句法:
public virtual Array ToArray (Type t);
在此,t是要创建和复制元素的目标数组的元素类型。
解释:
- 它将ArrayList的元素复制到指定元素类型的新数组。
- 它返回指定元素类型的数组,其中包含ArrayList元素的副本。
- 如果t的值为null,则抛出ArgumentNullException 。
- 如果无法将源ArrayList的类型强制转换为指定的类型,则抛出InvalidCastException 。
范例1:
// C# program to illustrate the use
// of ToArray(Type) Method in the
// conversion of ArrayList to Array
using System;
using System.Collections;
class GFG {
// Main Method
public static void Main()
{
// Create and initalize new array
ArrayList mylist = new ArrayList(5);
mylist.Add("Ruby");
mylist.Add("C#");
mylist.Add("C++");
mylist.Add("Java");
mylist.Add("Perl");
// Copy the data of Arraylist into
// the string Array Using
// ToArray(Type) method
string[] str = (string[])mylist.ToArray(typeof(string));
// Display the data of str string
foreach(string j in str)
{
Console.WriteLine(j);
}
}
}
Ruby
C#
C++
Java
Perl
代码说明:在这里,我们将ArrayList转换为指定类型(即字符串类型)的Array。为了进行转换,您必须将ToArray(Type)方法与typeof关键字一起使用。然后,您必须将其显式转换为指定的类型。在这里,您可以看到代码行字符串[] str =(字符串[])mylist.ToArray(typeof(字符串)); 。 (字符串[])用于mylist将其转换为字符串数组类型。这行代码还有另一种选择,如下面的示例所示。
范例2:
// C# program to illustrate the use
// of ToArray(Type) Method in the
// conversion of ArrayList to Array
using System;
using System.Collections;
class GFG {
// Main Method
public static void Main()
{
// Create and initalize new array
ArrayList mylist = new ArrayList(5);
mylist.Add("Ruby");
mylist.Add("C#");
mylist.Add("C++");
mylist.Add("Java");
mylist.Add("Perl");
// Copy the data of Arraylist into
// the string Array Using
// ToArray(Type) method
// see this clearly as here we
// are using as keyword
string[] str = mylist.ToArray(typeof(string)) as string[];
// Display the data of str string
foreach(string j in str)
{
Console.WriteLine(j);
}
}
}
Ruby
C#
C++
Java
Perl
如果ArrayList不包含相同类型的所有元素会发生什么?
如果ArrayList不包含相同类型的元素,则您的转换(从ArrayList到Array)将抛出InvalidCastException 。
例子:
// C# program to illustrate the use
// of ToArray(Type) Method in the
// conversion of ArrayList to Array
using System;
using System.Collections;
class GFG {
// Main Method
public static void Main()
{
// Create and initalize new array
ArrayList mylist = new ArrayList(5);
mylist.Add("Ruby");
mylist.Add(5);
mylist.Add("C++");
mylist.Add(7);
mylist.Add("Perl");
// It will throw the InvalidCastException
// Copy the data of Arraylist into
// the string Array Using
// ToArray(Type) method
string[] str = mylist.ToArray(typeof(string)) as string[];
// Display the data of str string
foreach(string j in str)
{
Console.WriteLine(j);
}
}
}
运行时错误:
Unhandled Exception:
System.InvalidCastException: Specified cast is not valid.