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