Никак, если эта копия никак не ссылается на исходный объект и если ты не инкрементируешь какую-то переменную типа int, чтобы с её помощью обратиться к исходному массиву по этому индексу и удалить там объект тоже. Но тогда зачем использовать foreach.
Вот о чём я.
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
var source = new Person[]
{
new Person { Age = 20, Name = "Сергей" },
new Person { Age = 32, Name = "Дмитрий" },
new Person { Age = 18, Name = "Андрей" }
};
var copy = new Person[source.Length];
Array.Copy(source, copy, source.Length);
DisplayPersons(copy);
Console.WriteLine();
int index = 0;
foreach (Person person in copy)
{
Console.WriteLine(person.Name + " удалён из исходного массива");
source[index++] = null;
}
if (source.Any(p => p != null))
{
Console.WriteLine("Не удалось удалить все элементы исходного массива.");
}
Console.ReadKey();
}
static void DisplayPersons(IEnumerable<Person> persons)
{
foreach (Person person in persons)
{
Console.WriteLine("Имя: {0}, возраст: {1}", person.Name, person.Age);
}
}
}