C♯相談室 Part14

このエントリーをはてなブックマークに追加
62名無しさん♯
F#みたいなこともだいぶ楽に書けるんだね。

using System;
using System.Collections.Generic;

delegate T Func<T>(T arg);

class Test {

  public static List<T> Map<T>(List<T> list, Func<T> func) {
    for (int n = 0; n < list.Count; n++) {
      list[n] = func(list[n]);
    }
    return list;
  }

  public static void Iter<T>(List<T> list, Func<T> func) {
    foreach (T t in list) {
      func(t);
    }
  }
63名無しさん♯:04/02/23 09:11

  static void Main() {
    List<int> l = new List<int>();
    l.Add(1); l.Add(2); l.Add(3); l.Add(4); l.Add(5);

    // 二乗する関数
    Func<int> square = delegate(int n) {
      return n * n;
    };

    // 表示する関数
    Func<int> print = delegate(int n) {
      Console.WriteLine(n);
      return 0;
    };

    Map(l, square);
    Iter(l, print);
  }
}