C# 堆栈 - CopyTo() 方法
C# 堆栈 CopyTo() 方法用于将堆栈复制到现有的一维数组中,从指定的数组索引开始。
元素将按照后进先出 (LIFO) 的顺序复制到数组中。
语法
以下是 C# 堆栈 CopyTo() 方法的语法 -
public virtual void CopyTo (Array array, int index);
参数
此方法接受以下参数 -
- array:它是一个从零开始的一维数组,是从堆栈中复制元素的目标位置。
- index:它表示数组中从零开始的索引,复制从该索引开始。
返回值
此方法不返回任何值。
示例 1:使用 CopyTo() 方法
以下是使用 CopyTo() 方法复制堆栈元素到数组中的基本示例 -
using System;
using System.Collections;
class Program {
static void Main() {
Stack myStack = new Stack();
myStack.Push("Tutorialspoint");
myStack.Push("Hyderabad");
myStack.Push("India");
myStack.Push("Tutorix");
// 创建一个足够大小的数组
object[] myArray = new object[5];
// 将堆栈元素复制到从索引 2 开始的数组
myStack.CopyTo(myArray, 1);
// 显示数组元素
Console.WriteLine("Array after copying:");
foreach (var item in myArray) {
// 使用 ?? "null" 来处理空槽
Console.WriteLine(item ?? "null");
}
}
}
输出
以下是输出 -
Array after copying: null Tutorix India Hyderabad Tutorialspoint
示例 2:将堆栈转换为数组
让我们看另一个使用 CopyTo() 方法的示例,该示例将堆栈中的所有元素复制到数组中 -
using System;
using System.Collections;
class Program {
static void Main() {
Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
myStack.Push(5);
// 创建一个足够大小的数组
object[] myArray = new object[5];
// Copy stack elements to the array starting at index 2
myStack.CopyTo(myArray, 0);
// 显示数组元素
Console.WriteLine("Array after copying:");
foreach (var item in myArray) {
// 使用 ?? "null" 来处理空槽
Console.WriteLine(item ?? "null");
}
}
}
输出
以下是输出 -
Array after copying: 5 4 3 2 1
示例 3:将 Person 详细信息复制到数组中
以下示例创建了一个 Person 对象。这里,我们使用 CopyTo() 方法从堆栈中创建一个 Person 对象数组 -
using System;
using System.Collections.Generic;
class Person {
public string Name { get; set; }
public int Age { get; set; }
// 构造函数初始化姓名和年龄
public Person(string name, int age) {
Name = name;
Age = age;
}
public override string ToString() {
return $"Name: {Name}, Age: {Age}";
}
}
class Example {
static void Main() {
// 创建一个 Person 对象堆栈
Stack<Person> people = new Stack<Person>();
// 将 Person 对象推送到堆栈
people.Push(new Person("Aman", 25));
people.Push(new Person("Gupta", 24));
people.Push(new Person("Vivek", 26));
Console.WriteLine("People stack before CopyTo:");
foreach (var person in people) {
Console.WriteLine(person);
}
// 创建一个数组来保存复制的元素
Person[] peopleArray = new Person[3];
people.CopyTo(peopleArray, 0);
Console.WriteLine("Array after CopyTo:");
foreach (var person in peopleArray) {
Console.WriteLine(person);
}
}
}
输出
以下是输出 -
People stack before CopyTo: Name: Vivek, Age: 26 Name: Gupta, Age: 24 Name: Aman, Age: 25 Array after CopyTo: Name: Vivek, Age: 26 Name: Gupta, Age: 24 Name: Aman, Age: 25

csharp_stack.html