public static void Main()
{// do something here
String[] array1d = { "zero", "one", "two", "three" };
ShowArrayInfo(array1d);
PrintValues(array1d);
//do something here
}
public static void ShowArrayInfo(Array arr)
{//do something here}
public static void PrintValues( string[] myArr )
{//do something here}
在上面的代码中有两个不同的函数叫做
1. ShowArrayInfo
2. PrintValues
但是在两个函数中收集数组的方式是不同的。一个是Array arr
,另一个是int[] myArr
。
这两种收集数组的方法有什么区别,arr
和myArr
是一样的吗? arr
和myArr
引用原始数组:array1d?我们可以在myArr
上执行与我们在arr
上执行的操作相同的操作吗?
答案 0 :(得分:1)
数组为Reference types
,如果更改函数内部数组中的元素,则会在调用者中反映出来。
Array
就像一个更通用的类来处理数组。查看下面的例子。
使用Array
课程,arr.GetValue(0)
返回object
而不是int
。
static void ChangeFirstItemToTen(int[] arr)
{
arr[0] = 10;
}
static void ChangeFirstItemToTen(Array arr)
{
arr.SetValue(10, 0);
}
static void Main(string[] args)
{
int[] values = new int[] { 5, 6, 7, 8 };
ChangeFirstItemToTen(values);
Console.WriteLine(values[0]); // prints 10;
}
答案 1 :(得分:0)
Per the documentation,Array
是CLR中所有数组的基类。
您还可以从文档中看到基类上可用的方法和属性要少得多。您使用Array
而不是T[]
({1}}引用数组的原因并不多。
在您的示例中,int[]
和arr
都引用了与myArr
相同的数组。主要区别在于您可以使用的方法和属性(尽管您可以轻松地从一个转换为另一个)。
答案 2 :(得分:0)
Array
是C#中所有数组的基类。您定义的两个方法的唯一区别是,只接受任何类型的数组和其他类型的int。两者都将通过价值传递'技术。
您可以使用'通过引用传递'使用answer关键字。