版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34536551/article/details/84334743
目录
● C# 数组从 System.Array 类继承, 它们可以从基类继承很多有用的属性和方法,如图:
namespace HelloWorld_Console
{
class Program
{
static void PrintArray(int []a)
{
foreach (var x in a)
{
Write($"\n{x}");
}
}
static void Main(string[] args)
{
int[] arr = new int[] { 15, 20, 5, 25, 10 };
PrintArray(arr);
WriteLine();
Array.Sort(arr);
PrintArray(arr);
WriteLine();
Array.Reverse(arr);
PrintArray(arr);
WriteLine();
WriteLine($" Rank = {arr.Rank}, Length = {arr.Length}");
WriteLine($"GetLength = {arr.GetLength(0)}");
WriteLine($"GetType = {arr.GetType()}");
ReadKey();
}
}
}
输出结果为:
15
20
5
25
10
5
10
15
20
25
25
20
15
10
5
Rank = 1, Length = 5
GetLength = 5
GetType = System.Int32[]
Clone 方法
Clone 方法为数组进行浅复制,也就是说,它只创建了数组本身的克隆。 对于类型数组和引用类型数组而言,有不同的结果。
克隆值类型数组会产生两个独立数组。
克隆引用类型数组会产生指向相同对象的两个数组。
那么Clone 方法返回 Object 类型的引用, 它必须被强制转换成数组类型。
下列代码克隆一个值类型数组的示例,它产生了两个独立的数组:
namespace HelloWorld_Console
{
class Program
{
static void Main(string[] args)
{
int [] intArr1 = { 1, 2, 3 };
int[] intArr2 = (int[])intArr1.Clone();
WriteLine("输出intArr2数组中的值:");
foreach (var tt in intArr2)
{
WriteLine(tt);
}
for (int i=0;i<intArr2.Length;++i)
{
intArr2[i] *= 100;
}
WriteLine("输出改变intArr2数组中的值:");
foreach (var tt in intArr2)
{
WriteLine(tt);
}
ReadKey();
}
}
}
输出结果为:
输出intArr2数组中的值:
1
2
3
输出改变intArr2数组中的值:
100
200
300
克隆引用类型数组时, 这两个数组都会指向相同的对象。
namespace HelloWorld_Console
{
class A
{
public int Value = 5;
}
class Program
{
static void Main(string[] args)
{
A[] AArray1 = new A[3] { new A(), new A(), new A() };
WriteLine("先输出AArray1的值:");
foreach(var tt in AArray1)
{
WriteLine(tt.Value);
}
A[] AArray2 = (A[])AArray1.Clone();
WriteLine("再输出AArray2的值:");
foreach (var tt in AArray1)
{
WriteLine(tt.Value);
}
WriteLine("再输出AArray2的改变后的值:");
for (int i=0;i<AArray2.Length;++i)
{
AArray2[i].Value = i+1;
AArray2[i].Value *= 100;
WriteLine(AArray2[i].Value);
}
ReadKey();
}
}
}
输出结果为:
先输出AArray1的值:
5
5
5
再输出AArray2的值:
5
5
5
再输出AArray2的改变后的值:
100
200
300