いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

C# 3.0

某スレで C# 3.0 の話題が出ていました。 こんな構文が可能になるらしい(多分)

using System; 
using System.Collections.Generic; 
using System.Query; 

using MyExtension; 

namespace MyExtension { 

  static class Extension1 { 

    public static IEnumerable Filter(this IEnumerable data, Func func) { 
      foreach (T d in data) { 
        if (func(d)) yield return d; 
      } 
    } 

    public static void Trace(this IEnumerable data) { 
      foreach (T d in data) { 
        Console.WriteLine(d); 
      } 
    } 
  } 
} 

class Test { 

  static void Main() { 
    var arr1 = new { 1, 2, 3, 4, 5 }; 
    // 従来の呼び出し方 
    var result1 = Extension1.Filter(arr1, n => n < 3); 
    Extension1.Trace(result1); 

    var arr2 = new { "mona", "giko", "sii" }; 
    // Extension Methodでの呼び出し方 
    var result2 = arr2.Filter(s => s.Contains("i")); 
    result2.Trace(); 
  } 
} 

いやもう何がなんだか…(苦笑
気持ち程度しか読めん…… orz

え、掃除中じゃなかったのかって?
いやちょっと、FDのイメージ化してたりしまして……。フロッピ最強。うむ!