タグ

ブックマーク / nyaruru.hatenablog.com (7)

  • .NET Framework 2.0 で LINQ を使う方法 - NyaRuRuが地球にいたころ

    PseudoLinq 〜 .NET Framework 2.0 上で LINQ を使おう - u_1rohのカタチ 株式会社カタッチ / 製品 / PseudoLinq うわー,うちの『C# 3.0 による .NET 2.0 アプリケーション開発 - XNA で LINQ を使おう - NyaRuRuの日記』がご迷惑をおかけしたようで.id:atsushieno さんにフォローしていただいていたので大丈夫かと思っていたのですが,確かにトラックバックだと気付きにくいかもしれませんね.ちゃんと文にも追記しておきます. それはそれとして,LINQ (to Object) を .NET Framework 2.0 でという話は結構耳にします.私が知っている先行事例だけでも列挙しておきましょう. LINQBridge System.Linq.Enumerable の再実装 作者は『C# 3.0 i

    .NET Framework 2.0 で LINQ を使う方法 - NyaRuRuが地球にいたころ
    u_1roh
    u_1roh 2008/08/06
    すいませんすいません、私がマヌケだっただけです。それにしても、こうやって宣伝されてしまうとますます恥ずかしいような・・・。
  • JIT コンパイラの Dead Code Elimination を利用して,同一の CIL から複数の実装を生成する - NyaRuRuが地球にいたころ

    値型かもしれない変数をnullと比較する 『プログラミングMicrosoft .NET Framework 第2版』で紹介されているように,以下のコードは合法. ジェネリックの型引数をnullと比較する ジェネリックの型が制約されていなくても、ジェネリックの型引数を、==演算子または!=演算子を使ってnullと比較することができます。 private static void ComparingAGenericTypeVariableWithNull<T>(T obj) { if (obj == null ) { /* 値型では絶対に実行されない */ } } Tには制約がないので、参照型にも値型にもなりえます。Tが値型であった場合、objはnullにはなりません。この場合、C#コンパイラがエラーを出力すると思うでしょう。しかし、C#コンパイラはエラーを出力しません。このコードは問題なくコン

    JIT コンパイラの Dead Code Elimination を利用して,同一の CIL から複数の実装を生成する - NyaRuRuが地球にいたころ
    u_1roh
    u_1roh 2008/08/01
    型引数Tにclass制約がなくても default(T) == null の比較文は合法、という話。
  • C# 3.0 による .NET 2.0 アプリケーション開発 - XNA で LINQ を使おう - NyaRuRuが地球にいたころ

    Visual Studio 2008 の新機能のひとつに「Multi-Targeting」があります.これは,Visual Studio 2008,つまり C# 3.0 や Visual Basic 9 を用いつつ,ターゲット環境を .NET 2.0/3.0/3.5 から選択できる,というものです. C# 3.0 や Visual Basic 9 の新機能は,基的にコンパイル時のシンタックスシュガーであり,そのうちいくつかの機能は System.Core.dll に定義された型に依存しています. var キーワード,匿名関数としてのラムダ式などは,ターゲットとして .NET 2.0 を選んだ場合にも使うことができる機能の一例です. 一方,System.Core.dll に依存する言語新機能は,.NET 2.0 をターゲットとするプロジェクトでは使うことができません.表向きは. .NET

    C# 3.0 による .NET 2.0 アプリケーション開発 - XNA で LINQ を使おう - NyaRuRuが地球にいたころ
    u_1roh
    u_1roh 2008/06/20
    .NET3.5のクラスを「詐称」して、無理矢理 .NET2.0 で C#3.0 を使う方法。
  • 拡張メソッドと不思議なパターンマッチ - NyaRuRuが地球にいたころ

    あんまり知られてなさそうな,C# 3.0 の不思議な世界. 不思議なパターンマッチ 例えば次のような拡張メソッドを考えます. public static string Hey<T, U>(this IDictionary<T, U> dict) where U : IEnumerable<T> { return "Hey!"; } この拡張メソッドは,インスタンスが上記パターンに該当するときだけ使える変なインスタンスメソッドのように振る舞います. 例えば Dictionary<int, int> は上記パターンを満たさないので,Hey は IntelliSense のリストに現れません.しかし Dictionary<char, string> であればパターンを満たすので,Hey が IntelliSense のリストに現れます. これはちょっと画期的なことです. 従来の C# では,型引

    拡張メソッドと不思議なパターンマッチ - NyaRuRuが地球にいたころ
    u_1roh
    u_1roh 2008/03/28
    面白い。Modern C++ Design的なハックと感じた。何か良い使い道はあるのかなー?
  • クエリ式で総当たり - NyaRuRuが地球にいたころ

    発端 『C# の yield return の使い道 - u_1rohのカタチ』にコメントを書く. 久しぶりに yhara くんの『Ruby勉強会@関西-16「30分でわかるcallccの使い方」- Greenbear Diar』を読み直す. oxy くんの『Non Determinism - Rubyのある風景』を思い出す. そういや C# 3.0 なら書けるなぁ. とまあそんな感じで. リストモナドで非決定性計算以上のリストモナドの性質を使うと、総当たりのプログラム、格好よくいうと非決定性の計算を行うことができます。 SICPから次のような問題を借りることにします。 Baker, Cooper, Fletcher, MillerとSmithは五階建てアパートの異なる階に住んでいる。Bakerは最上階に住むのではない。Cooperは最下階に住むのではない。Fletcherは最上階にも最下

    クエリ式で総当たり - NyaRuRuが地球にいたころ
    u_1roh
    u_1roh 2008/03/04
    トラバ頂いた。後で勉強する(つもり)。
  • 一目で分からないかもしれない Visual Studio 今ここ - NyaRuRuが地球にいたころ

    ポイント Visual Studio 2005 は 2005 年内ぎりぎりに RTM を迎えた (店頭販売は 2006 年). Windows Vista のリリースは .NET Framework 3.0 (WPF/WCF/WF) のリリースでもあった.このタイミングで Visual Studio のメジャーアップデートは行われず,以下の 3 つのアップデートが行われた. Visual Studio 2005 SP1 によるバグ修正 Vista環境で Visual Studio 2005 を使用するためのパッチ集 .NET 3.0 の開発支援アドイン Visual Studio 2005 Extensions for WCF, WPF (正式サポートではなく Community Technology Preview; CTP 扱い) Visual Studio 2005 Extensio

    一目で分からないかもしれない Visual Studio 今ここ - NyaRuRuが地球にいたころ
  • XNA Game Studio に関わる派生ソフトウェア - NyaRuRuが地球にいたころ

    今回の話の周辺には Microsoft にとっての派生ソフトウェアが沢山登場します.そのあたりから見ていきましょう. CLR スクリプト言語が様々なプラットフォームに移植されているように,.NET の実行エンジンである CLR も,元々マルチプラットフォーム展開が示唆されていました.その移植にあたって,.NET アセンブリファイルの解析や,MSIL の JIT といった,質的な部分の移植がそこまで難航する理由は思い当たりません*1. また,.NET Framework 1.x/2.0 の CLR ですら,通常は数 MB のワーキング・セットで十分動作可能と言われています*2.Windows 環境での .NET アプリケーションのワーキング・セットが大きく見えることは,GC アルゴリズムがメモリの断片化耐性とパフォーマンスを重視していることと関係が深いと考えられ,搭載メモリが少ないからとい

    XNA Game Studio に関わる派生ソフトウェア - NyaRuRuが地球にいたころ
  • 1