Почему только статические методы?

220
21 сентября 2017, 13:11

Да, в C# очень обширная библиотека. Но почему то многие методы только статические. А хотелось бы ООП. А так, это же функциональщина получается. Взать тот же метод ForEach для массивов. Не применяется он к экземпляру класса. Пробовал сделать такую обёртку:

class Arr:Array
{
    public void forEach(Action act)
        {Array.ForEach(this,act);}
}

Выдаётся ошибка, что от System.Array нельзя наследоваться. Может как то можно прилепить к массиву такой интерфейс с минимумом кода?

Answer 1

Напишите метод расширения:

static class ArrayExt
{
    public static void ForEach<T>(this T[] source, Action<T> action)
    {
        Array.ForEach(source, action);
    }
}

Использовать можно, например, так:

int[] arr = { 1, 2, 3, 10 };
arr.ForEach(Console.WriteLine);
READ ALSO
С# mvc 5 с базой данных

С# mvc 5 с базой данных

Я создал две моделиОдин для игроков, а второе для клубов

267
C# PictureBox неполное отображение содержимого

C# PictureBox неполное отображение содержимого

На форме WinForms создано 4 PictureBox, в цикле для каждого контрола устанавливается image из Dictionary где ключом является путь к файлу картинки:

261
Хук клавиатуры не работает под другим пользователем

Хук клавиатуры не работает под другим пользователем

Для отлова нажатия клавиш использую хук через WinAPI

358
Inject dll process

Inject dll process

Подскажите каким способом еще возможно заинжектить dllnet кроме mono? Нужно чтобы dll загрузилась и выполнила void Loader из Class Initialize

249