Eсть ли универсальный способ обойти массив элементов произвольного типа?

Да, в C# есть универсальный способ обойти массив элементов любого произвольного типа. Для этой цели можно использовать цикл foreach, который предоставляет простой и элегантный способ перебора элементов массива.

Пример:

// Создаем массив с элементами произвольного типа
object[] array = new object[] { 1, "hello", DateTime.Now, true };

// Итерируемся по массиву с помощью цикла foreach
foreach (var item in array)
{
    // В данном случае item имеет тип object, поэтому для доступа к его членам необходимо приведение типа
    if (item is int)
    {
        int number = (int)item;
        Console.WriteLine("Это целое число: " + number);
    }
    else if (item is string)
    {
        string text = (string)item;
        Console.WriteLine("Это строка: " + text);
    }
    else if (item is DateTime)
    {
        DateTime date = (DateTime)item;
        Console.WriteLine("Это дата и время: " + date);
    }
    else if (item is bool)
    {
        bool flag = (bool)item;
        Console.WriteLine("Это логическое значение: " + flag);
    }
    else
    {
        Console.WriteLine("Неизвестный тип");
    }
}

В этом примере мы создали массив объектов, в котором содержатся элементы разных типов (целое число, строка, дата и время, логическое значение). Затем, используя цикл foreach, мы перебрали каждый элемент массива и проверили его тип с помощью оператора is. Затем мы выполнили соответствующие действия для каждого типа элемента.

Обратите внимание, что при использовании этого способа обхода массива элементов произвольного типа необходимо явное приведение типов для доступа к членам каждого элемента, так как переменная item будет иметь тип object по умолчанию.