Страницы

Поиск по вопросам

четверг, 18 апреля 2019 г.

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

Да, в C# очень обширная библиотека. Но почему то многие методы только статические. А хотелось бы ООП. А так, это же функциональщина получается. Взать тот же метод ForEach для массивов. Не применяется он к экземпляру класса. Пробовал сделать такую обёртку:
class Arr:Array { public void forEach(Action act) {Array.ForEach(this,act);}
}
Выдаётся ошибка, что от System.Array нельзя наследоваться. Может как то можно прилепить к массиву такой интерфейс с минимумом кода?


Ответ

Напишите метод расширения:
static class ArrayExt { public static void ForEach(this T[] source, Action action) { Array.ForEach(source, action); } }
Использовать можно, например, так:
int[] arr = { 1, 2, 3, 10 }; arr.ForEach(Console.WriteLine);

Комментариев нет:

Отправить комментарий