Интерфейсы и делегаты. Каков функционал IEnumerable в приведенном коде - C#
Формулировка задачи:
пробую так, но не очень то получается
и прошу объяснить при чем тут IEnumerable
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
List<String> list = new List<String>();
list.Add("2");
list.Add("3");
Select<List<String>>(/*что передать первым аргументом?*/, ,delegate(List<string> item) {
for (int i = 0; i<item.Count;i++) {//производим действия над коллекцией }
return item;//возвращаем новую коллекцию
}
}
// public T d<T>(T item) { return item; }
public static IEnumerable<T> Select<T>(this IEnumerable<T> collection, MyFunc<T> selector) {
//тут надо вызвать selector(collection)?
};
public delegate T MyFunc<T>(T item);
}
}Решение задачи: «Интерфейсы и делегаты. Каков функционал IEnumerable в приведенном коде»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication37
{
static class Program
{
public delegate T MyFunc<T>(T item)where T:struct;
static void Main(string[] args)
{
//Экземпляр делегата с указанием цели
MyFunc<int> myFunc = new MyFunc<int>(Multi);
//Коллекция, над которой совершается преобразование
int[] myArr = { 1, 4, 7, 2, 9, 5, 2, 0, 7, 2, 7 };
//Преобразованная коллекция
int[] newArr = (myArr.MySelect(myFunc)).ToArray();
//Вывод полученной коллекции
foreach (int i in newArr)
Console.WriteLine("Item: {0}", i);
Console.ReadLine();
}
//Метод-расширение
public static IEnumerable<T> MySelect<T>(this IEnumerable<T> collection, MyFunc<T> selector)where T:struct
{
IEnumerable<T> coll = from n in collection select (selector(n));
return coll;
}
//Метод для делегата
static int Multi(int x)
{
return x * 10;
}
}
}