2007-01-01から1年間の記事一覧

LINQ to Object のイディオム その3 : シーケンス生成

C#

「標準クエリ演算子は、"シーケンス" を操作します。ある型 T に対してインターフェイス IEnumerable を実装するオブジェクトはすべて、その型のシーケンスと見なされます。」.NET 標準クエリ演算子より引用。 シーケンスの「生成演算子」あたりがお題。 冒…

訳語

C#

「式ツリー」って訳がねぇ。ど〜もねぇ。ルー大柴っぽくってwww 二分木、構文木とか定着してるから式木でいいと思うんだけど。

配列の共変性はちょっと壊れてる

C#

元ネタ http://blogs.msdn.com/ericlippert/archive/2007/10/17/covariance-and-contravariance-in-c-part-two-array-covariance.aspx 配列の共変性はちょっと壊れてるというお話。試してみました。 このコードは正常に実行できるでしょうか?コンパイルエラ…

yield 再帰

C#

Composit パターンを使った木構造にイテレータを書こうとして、ふと yield で再帰ってどうやるんだ?とちょっと考え込んでしまったのでメモ。わかってしまえば、あーこれ再帰だよねぇと納得ですが、パッと見、再帰に見えない罠。 せっかくなのでファイル/デ…

宣言型とか XML とかだらだらと

C#

ふと、XmlSerializer で XML の読み書きするのって宣言型プログラミングだよね、とか書いてみたりして。XmlElement 属性を使って、XML 要素名を .NET のクラス名にマッピングしたりだとか、そういうあたりが。属性は .NET 登場時から宣言型プログラミングっ…

Select は?

C#

http://msdn2.microsoft.com/en-us/library/ckzcawb8(VS.90).aspxSelect() と SelectMany() はどこ?

LINQ to Object のイディオム その2 : 集計演算子, 要素演算子, 限定子

C#

ちょっといない隙に PLINQ/TPL や Volta や International Pack とかw VS2008 が出たばっかりなのに、なんなんだろう(^^; 遠い未来の夢と思ってたライブラリが急に目の前にポンと出てきて、なんだか戸惑ってしまってます。で、どれで遊ぶか迷った末に決めか…

りんくあそび

C#

LINQ の練習に WMI ネタとフィボナッチネタのバリエーションをいろいろ書いて試してますが、インテリセンスがついてくるのがスゴイですね。ときどきあるんですが、文法は正しいのに表示しなくなったら、一度ビルドすればまた表示してくれるようになります。 …

LINQ でフィボナッチ (危険)

C#

動いちゃったのでさらします。真似しちゃダメっぽいです。Max を大きくすると大変なことになります。 どう動いているのだろ(^^; 頭がついていきません…w using System; using System.Collections.Generic; using System.Linq; class Program { private cons…

C# と VB

http://www.google.com/trends?q=c%23%2C+VB&ctab=0&geo=all&date=all&sort=0日本だけは VB 大国? Redmond は C# にかなり偏ってるようですが。

LINQ で WMI その3

C#

id:siokoshou:20071124 のクエリーを少しだけスッキリさせてみた。 Func<object, Dictionary<int, string>, string> map = ( o, d ) => d == null ? o.ToString() : d[ ToInt( o ) ]; var query = from ManagementObject mo in ( new ManagementClass( "Win32_CacheMemory" ) ).GetInstances(</object,>…

リンク切れ

VC#2008Express英語版入れて遊んでますが、ドキュメントのリンク切れがひどいですね…。RC出しとけばよかったのに…。日本語版だと直ってたりしないかと超期待。

LINQ パズル

C#

http://www.infoq.com/news/2007/11/Functional-CSharp int[] b = Enumerable.Range( 1, 20 ).ToArray();Correct? using System; using System.Linq; class P { static void Main() { int[] a = new int[ 20 ]; for ( int x = 0; x < a.Length; x++ ) a[ x ]…

LINQ to Object のイディオム その1 : Cast() と OfType()

C#

昨日の LINQ to Object コードが読めなくなる前に(^^; メモを少し書き散らしておきます。 IEnumerable を LINQ to Object で扱うには Cast() か OfType() で IEnumerable に変換する。古くからある非ジェネリクスなコレクションを LINQ で扱うには変換必須。…

LINQ to Object の資料

C#

LINQ だけで本が何冊も出てくると予想してますが、早く日本語の良い本が一冊欲しいなぁ。ITマスコミが LINQ の記事をあまり書かないのは、LINQ が何なんなのか理解されていないからっぽいですね。某所のクイズを見てそれ正解じゃないからとか思ったり。LINQ …

LINQ で WMI その2

C#

昨日の WMI の id:siokoshou:20071123#p2 って外部結合ってやつじゃね?と思って、全部そのまま LINQ にしてみました。苦労した。でもタノシイ。単に select の部分がこってるだけなのが不満。もっと遊んでしまいそうな気が…。 WmiWin32CacheMemoryMessages …

LINQ で WMI

C#

せっかくなので LINQ で。 using System; using System.Management; using System.Linq; class P { static void Main() { var query = from mo in ( new ManagementClass( "Win32_CacheMemory" ) ). GetInstances().OfType<ManagementObject>() from p in mo.Properties.OfType<PropertyData></propertydata></managementobject>…

はじめての WMI

C#

WMI 初めて使いました。MSDN の宇宙語っぷりにクラクラしたけど、宇宙仮面さんが解読済みだったので助かりました。ありがとうございます。Win32_CacheMemory の手抜きサンプル書いてみました。 値の意味の文字列はどっかから取れないのかなぁ。コピペして Ct…

object initializer は atomic

C#

http://community.bartdesmet.net/blogs/bart/archive/2007/11/22/c-3-0-object-initializers-revisited.aspxオブジェクト初期化子って↓こういうやつね。 Customer c = new Customer() { Name = "Bart", City = "Redmond", Age = 24 }; 中途半端な状態は作ら…

拡張メソッドと null

C#

昨日は拡張メソッドの闇の面中心に書いたので、今度は光の面でも。 拡張メソッドの紹介記事によく出てくる string.IsNullOrEmpty() ですが、おもしろいことに気付きました。 using System; class Program { static void Main( string[] args ) { string a = …

拡張メソッドの字面が引き起こす混乱

C#

こちらは変換規則なんてややこしい問題ではないけど、字面が引き起こす混乱の例。 using System; class P { static void Main() { S a = new S { Val = 0 }; Console.WriteLine( a.Val ); // 0 a.Inc(); Console.WriteLine( a.Val ); // 1 a.ExtInc(); Conso…

if ( 拡張メソッド == インスタンスメソッド ) return ?

C#

前の記事を書いてからやっと気付いたけど(^^;、これはつまりインスタンスメソッドの動作をまねてるんですね。 もうちょっと調べてみました。ToString() の例はイマイチなので、別の例に差し替えます。 using System; class Program { static void Main() { B…

拡張メソッド != 静的メソッド

C#

C#3.0 の拡張メソッドの怖いお話。拡張メソッドと静的メソッドは構文の字面だけの違いで、ほかは同じだよと言われることが多いけど、実は違います。仕様書に書いてはあるけど、はっきり注意を喚起していないので。拡張メソッドの仕様はこちら。 念のため引用…

VS2008

あちこちで書かれてて、今さらですが出ましたね。 http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx.NET3.5 やソースコードや LINQ や WPF やらと賑やかですが、実は一番期待しているのは WinForm のデザイナがエラーを吐かないようになっ…

C# の親たち

C#

http://blogs.msdn.com/charlie/archive/2007/11/12/visual-c-team-picture-fall-2007.aspxid:siokoshou:20071111:p1 を貼っておいて、こっちを取り上げないわけにはいかないなっと。完成記念の集合写真でしょうか。blog でいつも読んでる方々のお顔が見れる…

EqualityComparer を覗いてみる

C#

EqualityComparer.Default とかすると比較子が取れるなんとも不思議なクラスですが、こんなふうになってるんですね(monoです)。自身を継承したクラスを強引に作ってる(^^;Equals メソッドで T のオブジェクトが null か判定しています。この部分は IL には b…

うまいなぁ

http://d.hatena.ne.jp/nishiohirokazu/20071110/1194687711時魔法は?

ワロス

http://www.iunknown.com/2007/11/ironruby-talks.html

アヒルのように飛び…

http://www.popfly.ms/users/siokoshou/NASA popflyってみた。はまりそう。ちょっと重いけど。なぜかときどき表示されないこともあるけれど、おもちゃのアヒルなので。

Win32manifest

C#

http://msdn2.microsoft.com/ja-jp/library/bb545961(VS.90).aspx manifestがつけれるようになるみたい。#読みづらいので修正。