C#3.0
「弱い参照」と「強い参照」.NET Frameworkでは、ガベージコレクションによってメモリが管理されます。 変数(フィールドやローカル変数など)に格納されている参照のことを「強い参照」と言います。 強い参照によるオブジェクトは、そのオブジェクトがアク…
久しぶりにExpression Tree(式木)をいじってました。 .NET Framework4では式木が大幅にバージョンアップして、複文や条件分岐、ループなどが表現できるようになりましたが、 それによってどんな面白いことができるかは、まだ模索中だったりします。 今回はと…
拡張メソッドバブルのこのご時世、ジェネリックデリゲートに対して拡張メソッドが定義されていることとかも少なくない。 ということで、ふつうのデリゲートをジェネリックデリゲートとして扱いたい!なんてケースもあるようなないような。いや、きっとありま…
MVVMパターンのViewModelで、INotifyPropertyChangedをいちいち実装すんのかったるい。かといって、AbstractなViewModelBaseは継承したくないでござるよ。
INotifyPropertyChanged インターフェースを実装した抽象クラス ViewModelBase は、残念な俺俺設計MVVMパターンでViewModelを実装する場合、INotifyPropertyChanged インターフェースを実装するのが面倒という理由もあって、 INotifyPropertyChanged インタ…
遅ればせながら「WindowsForm終了のお知らせ」を感知WPFに関しては、仕事で使う機会もなく、自宅に満足な開発環境もなかったという理由で、 関連記事の流し読み程度はしていましたが、基本華麗にスルーしてきました。 しかし、Windows7が好感触だったり、今…
.NET Framework4.0には System.Lazy なんてものが追加されていて、 もしかして遅延評価標準サポートktkr?と、思わずwktkした人も少なくないのでは。 ですが、これはインスタンスの生成を遅らせるだけの代物でした。多くのC#erの期待は一瞬にして儚く散って…
前回のエントリメモ化を抽象的に考えて一般化する。これぞジェネリックプログラミングの神髄!なんつってーをうけて、 taguoさんが、メモ化について良質な記事を書いてくださいまいました。ありがとうございます! めもだいすき - 一生酩酊 まさにメモウマ状…
前回のエントリーで書いた関数の「メモ化」について抽象的に考えて、 ジェネリックプログラミングをしてメモ化を一般化してみましょう。 ググッたところ、1つの引数をとる関数のメモ化関数は多くの人が書いていますが、 2つ以上の引数をとる関数のメモ化関…
メモ化とはプログラムを高速化するための最適化技法のひとつで、 関数呼び出しの結果を保持しておいて再利用するというものです。 1度呼び出された関数が再度呼び出されたときに再計算をせずに、保持しておいた値を再利用する手法です。 具体的には、キーと…
ネタ元: ぼくのかんがえたSortedList - こげこげ堂はてな支舗 http://d.hatena.ne.jp/isaisstillalive/20091022/1256188497 ISAさんがかんがえたSortedList{T}を、もうちょっと考えてみた自分だったらこうするかなぁ的に、id:isaisstillaliveさんのコードに…
不足気味でしたので、たまにはC#分を補充しておきます。 ↓ ↑ もう1年近く前になるんですね。以前、下記のエントリが注目を浴びていて、 わたしも楽しく読ませてもらいました。 Undo,Redoの実装って何十回もやってる気がする - あしあと日記 http://d.hatena…
id:atsukanrockさん、トラックバックありがとうございます。 「 熱燗ロックのブログ - .NET Frameworkで、シリアル化可能なタイプセーフenumを実装する - その2」を受けまして、 さっそく、まねまねさせて頂まして、再びTypeSafeEnumを書き直しました。 そう…
以前書いたAbstractなTypeSafeEnumでは、振舞いについてFuncデリゲート固定として実装していました。 でもやっぱり、ちゃんとしたStateパターン的なTypeSafeEnumが欲しいよね。 というわけで、タイプセーフEnumの振舞いについてジェネリックで抽象化してみま…
微妙に風化したお題ではありますが、どう書く?orgデビューしてみました。 using System; using System.Linq; namespace ConsoleApplication1 { class Program { static void Main() { var str = @"こんにちは みなさん おげんき ですか? わたしは げんき …
System.Collections.Specialized 名前空間以下のコレクションについて以前、「.NET Frameworkの代表的なコレクションとかいいつつ非ジェネリックって…?なんぞこれ。」を書きました。 このエントリでは、素敵な方たちにはてなスターを頂き、共感していただけ…
MSDN マガジン - CLR 徹底解剖 オブジェクトの有効期間を管理する 残念ながら、C# には、スコープ間またはスレッド間で使用できる using キーワードと同等の簡単なコンストラクタはありません。このため、Dispose の呼び出しをコンポーネント間でネゴシエー…
WeakEvent パターン(msdn.microsoft.com)というのがあります。 WPFでごにょごにょしているような方であれば、ご存知の人も多いようですが、 WPFと無縁の人たちにとっては、認知度がかなり低いようです。 WeakEventパターン*1が有用となるシナリオは、なにもW…
なにやら↓こういうのが流行っていたようですね。元ネタ Perlでアニメ顔を検出&解析するImager::AnimeFace Yukkurizer - アニメキャラゆっくり化CGI 何かを受信(^o^)ノ *1 ゆっくりしてみようというわけで、やつけで適当にC#でゆっくりしてみました。 C#やVB…
C#に限った話ではなく、その他のプログラミング言語(C++やD言語など)でも、 演算子オーバーロードを利用するようなケースは非常に限られていると思う。 というのも、適切に利用せずに無闇に使うとメリットよりもデメリットの方が大きくなる場合が多いからだ…
C#から「はてなハイクAPI (http://h.hatena.ne.jp/api)」を利用するサンプルを作りました。 他の言語のサンプルは割りとあるようですが、C#ではなかったようなので。 画像を添付した投稿については面倒くさいので直接はサポートしていませんが、 呼び出し側…
パラドックス大全 - 世にも不思議な逆説パズル 著:ウィリアム・パウンドストーン 訳:松浦俊介 という本を読了しました。冒頭の水槽の脳の話から最後まで楽しく読めました。 その中で、NP完全と迷宮の話がでてきまして、大変興味をそそられました。 プログ…
CodeZineにて .NET Frameworkの代表的なコレクションと使い方 http://codezine.jp/article/detail/3640 という記事がありまして、結構な数のはてブをゲットしている人気記事のようでした。 でもなんで?というのが正直な感想です。「なんで?」の意味すると…
[方法:キー コンテナに非対称キーを格納する] http://msdn.microsoft.com/ja-jp/library/tswxhw92.aspx 非対称秘密キーは、ローカル コンピュータにそのまま平文として保存しないでください。 秘密キーを格納する必要がある場合は、キー コンテナを使用する…
きっかけはレーベンシュタイン距離 - shin5papaの日記 http://d.hatena.ne.jp/shin5papa/20090311/1236745197 レーベンシュタイン距離とN-gramモデルで、擬似的なGoogle Suggestレーベンシュタイン距離を使うことによって、擬似的にGoogle先生の「もしかして…
ジャグ配列を作るのって、じみ〜に面倒だったりしませんか。 そんなあなたに、ちょっとしたC#スニペット。こんなんどうでしょう。 using System; using System.Drawing; using System.Runtime.CompilerServices; namespace ConsoleApplication1 { public cla…
確かC#2.0から地味に(こっそり)追加されたキーワードだったと思いますが、 globalコンテキスト キーワードって、マイナーっぽいですね。 これを使って書いてるコードを仕事では見たことがないし。完全に存在が忘れられている感すらあります。 オライリー本の…
ExpandableObjectConverterのサブクラスで実装する内容TypeConverterAttribute属性を用いて、ExpandableObjectConverterおよび、その派生クラスを指定することで プロパティグリッドにネスト表示されるプロパティを作成することができます。 通常、Expandabl…
最適化のために最大公約数を求める必要があって、 ユークリッド互除法と拡張ユークリッド互除法を書いたので、チラ裏に残しておく*1。 ユークリッド互除法まずはよく見る実装をC#で public static int Gcd(int a, int b) { while (b != 0) { int r = a % b; …
またまたWindowsApplicationにおける標準コントロールが、空気読めなさすぎなのではないかというお話。 C#でTabIndexの階層構造順にControlを並べ替える方法の1つの例を示します。 TabIndexプロパティだけじゃ、TabIndexの階層構造わかんねーじゃん各標準コ…
C#で動的にDLL(ライブラリ)をロードしてアセンブリを作って、P/Invokeなdelegateを生成動的にDLL(ライブラリ)をロードするというシナリオは、意外と要求されることが多いのではないかと思います。 利用する関数があらかじめ明確になっているのであれば、その…