ようこそ。睡眠不足なプログラマのチラ裏です。

C#3.0

C#で和暦について本気出して考えてみた【初級〜中級編】IFormattable、ICustomFormatter、IFormatProviderインターフェイスを実装してみよう。てゆうか、プロのプログラマなら当然正規表現を使いたいよね!

思いつきで「C#で和暦について本気出して考えてみた」の不定期連載を開始します。 タイトルが長すぎというツッコミは、心の中にそっとしまっておいてください。 予定している連載内容【初級〜中級編】 和暦構造体を作ろう。 IFormattable、ICustomFormatter…

C#でもタプル使いたいよね。で、GetHashCodeのオーバーライドはどう実装すればよいの?

遅ればせながら、C#でもタプルが欲しくなった今日この頃。 C#4.0では標準でタプルを用意してくれるっぽいけど、今すぐ欲しいよ。 HaskellやPythonなどにあるタプル。C#でも使いたいよね!タプルとは、いくつかの値(数値型、文字列型など)をひとつにまとめて…

Excelのカラム名(26進数ぽ)を数値(10進数)へ変換。頑張れ日本のC#er。

以前、数値をアルファベット(26進数ぽ)へ変換、それはExcelのカラム名的な何か。という記事を書きました。 これは、10進数から26進数へ変換を行うだけの、ごくごく簡単なアルゴリズムです。 しかし、うちに来た人は「26進数から10進数 Excel 変換 C#」という…

任意のジェネリック型を動的に生成

ちょっとしたスニペットを置いておきます。任意のジェネリック型を動的に生成するためのメソッドです。 例えば、アセンブリ外に非公開の型についてジェネリック型を利用したいような場合等に有用です。 System.ReflectionやらSystem.Reflection.Emitを使って…

TextBoxってReadOnly = trueでもフォーカスあたる。空気読めなさすぎだよね。

WindowsApplicationの標準コントロールってKYだよねというお話C#でもVB.NETでも当然同じなんだけど、TextBoxコントロールのReadOnlyプロパティをtrueに設定したら、 入力を受け付けなくなるので、背景色をグレーに設定したりする。でもフォーカスは普通に受…

さっそくC#でプログラム言語「てってってー」のインタプリタを書いたよ

何かを受信(^o^)ノ プログラム言語「てってってー」 javascript - てってってー言語を移植してみた - 404 Blog Not Found Wikipedia - Brainf*ck というわけで、C#erな自分はC#で「てってってー言語」のインタプリタを書いてみました。 基本「Brainf*ck」の…

C#で順列(Permutation)と組み合わせ(Combination)をすべて列挙してみよう

さて、いきなり少年メリケンサックですが、気にしないでください。帰らないでください。内容はまともです。 C#で順列(Permutation)を列挙する実装については、割と書いている人がいます。 でも、組み合わせ(Combination)を列挙する実装は、あまり書かれてい…

モテようとして、C#でXOR使ってリバースしている奴がいたんですよ

いろいろなリバースのアルゴリズムを見てみましよう。 まずは表題のリバースのアルゴリズムについて、どうぞ。なんとなくモテようとしている感のあるリバースモテようとして、C#でXOR使ってリバースしている奴がいたんですよ・・(以下略)。 こんな感じで pub…

型なしDataSetと型付DataSet、そして片想いORマッピング的な何か。

ネタ元 山本大@クロノスの日記 - アンチ型付DataSet派の自作ORマッピングよりなぜ型付DataSetを使うのか、型なしDataSetは使わないのか型付DataSetについては、嫌な思い出も少なくないので不満がないわけでもないのだけど、 常識的に考えて「型付DataSetを…

ニコ動APIとLINQ to XMLでごにょごにょしよう

ニコニコ動画APIで動画情報とかサムネイルとかコメントとかFLVファイルとかいろいろ取得したりする 手抜きで作りかけの雑なC#のコードを今更ながらあげておきます。 いろいろダメなところ(手抜き)があるので、もし参考にするのであれば、そこん所ご注意くだ…

移動とリサイズ可能なコントロール

ネタ元:VB.NETで作る!移動、リサイズの出来るコントロールを作る http://shinshu.fm/MHz/88.44/archives/0000043418.html 単純におもろいなぁと思いまして、C#でMix-inっぽくシンプルにコントロールに実装できるように それ用のインターフェイスおよび、そ…

FlagsAttributeとビット演算のちょっとしたレシピ

「ハッカーのたのしみ」はかなりの良書。いまさらFlagsAttributeのレシピ、リターンズ。.NET FrameworkにBitCountくらい標準であってもいいのにね http://d.hatena.ne.jp/zecl/20100228/p1 ※この記事の内容は古いです。上記の記事をあわせて読むことをオスス…

カレー好きのための、ラムダ式でカリー化な拡張メソッド。

以前、C#2.0の匿名メソッドによるカリー化 という記事を書きました。 では、C#3.0ではどうなるのでしょう。 もちろんC#3.0でも匿名デリゲートを使うことはできますが、C#3.0であればやはりラムダ式です。 記述が簡潔になって、より直感的で分かりやすくなり…

C#でmap(写像)、foldlとfoldr(畳み込み)、unfold(解きほぐし)とか

※追記しました。2008/12/16 オブ脳寄りの人間なので、どうしても関数型脳に染まりきれないところはあるんですが、 今年Haskellを学んでみて、foldとかunfoldってのは、すっげー便利だなと思いました。 そんなわけで、C#でちょっくらfoldとかunfoldしてみよう…

IEnumerableをシャッフル!

ネタ元:id:kawatanさんのエントリより http://d.hatena.ne.jp/kawatan/20081210 IEnumerableを実装していれば何でもシャッフルって、素敵ですね〜。 カードゲームなんか作るときにサクッと利用できちゃいますね。 よいものは盗んじゃおう!ということで、さ…

C#でTypeSafeEnumを書いてみた

タイプセーフenumパターンというのがあったのですね。知りませんでした。 ジョシュア ・ブロック氏が「Effective Java」という本の中で提案していたものらしいです*1。 いやはや、もっと幅広く勉強せんとなぁ・・。ということで、 id:bleis-tiftさんのエント…

いまさらC#でライフゲームを書いてみた

どう書く?orgにて、C#で既に書いてらっしゃる方が多数おられますが、 どうもコードを短くすることに重点を置いて書いているような感じで、正直なんだか読みにくいなーと思い・・・。 冗長だけどわかりやすく、オブジェクト指向っぽくライフゲームを書いてみ…

常識的に考えてErrorProviderを使いたいよね

VB.NETでもC#でもいいんだけど、.NET Framework2.0以降でWindows.Formsなアプリを作る場合、 入力検証を行うようなときは、ErrorProviderを使いたいよね!*1というお話は、 .NETで飯を食っている人にとっては割と常識ではないかと思っていたのだが、実際のと…

C#でFLVファイルをお手軽再生

ニコニコ動画などから得られるFLVファイルですが、 C#でお手軽に再生するには、ActiveX Control(AxShockwaveFlash)に頼るといいっぽい。 アスペクト比が指定できなかったり、再生できないFLVも結構あるようですが、まぁお手軽ということで。 ※FLVファイルを…

特定のインターフェイスを持つプラグインを取得

以下のような感じで、特定のインターフェイスを持つプラグインを取得するメソッドを作ってみた。 複数の種類のプラグインを利用するアプリなんてそうそうない気がしないでもないが、 こんな感じでひとつ作っておくと便利。やっぱLINQとyield使うと、かなりす…

依存性をクラスごとに構成ファイルに定義。はい、DIです。

マイクロソフトから提供されてるEntLib*1に含まれている DIコンテナを弄ってみた。 思っていたよりもいい感じにDIできますね。うんこれは便利。 Microsoft Enterprise Library 4.1 – October 2008 構成ファイル(*.config)から手軽に依存性の注入をしようDIコ…

Alligator Eggs!で型なしラムダ計算を理解

C#とは直接関係ないけども、おもしろいの見っけた。 こいつを利用することで、形なしラムダ計算を比較的簡単に理解することができるかもしれない。 こちら→Alligator Eggs! 理にかなっているとはいえ、おじいさんワニのルールがシュールすぎるw

ボタン連打しないでね☆ それはPeekMessageでメッセージループ

Buttonのクリック処理が動作している最中に他のButtonやコントロール等をクリックした場合でも、 そのクリック操作をすべてシカトしたいなんてことはよくあるお話。 なぜクリック処理中のクリック操作がシカトされずに処理されてしまうのかと言えば、 クリッ…

iTunesLibで遊ぶ in C# コード晒します(羞恥心)

仕事で東京に行っていたので、ずいぶん間が空いてしまいました。 世に出回っているものに比べ、まだいろいろ貧弱ですが、とりあえず形になりましたので、 前回宣言したとおり「iTunesLibで遊ぶ in C#」のコード晒します(一部省略)。 あまり見所といった見所…

iTunesLibで遊ぶ in C#

ということで、今更感は否めないが、ちょろちょろとC#でiTunesLib弄って遊んでいます。 iTunesLibはCOMオブジェクトだったりして、別スレッドからイベントを飛ばしてきやがったりで、 ちょっとひと癖があるなーという感じ。というか、iTunesLibで遊ぶってゆ…

天津木村おもろいなあ

吟じます。 C#(しーしゃーぷ)でぇ〜えぇ〜〜え〜え〜〜〜え〜〜え〜 ラムダ式書きまくったあとにぃ〜〜〜い〜〜〜い〜〜〜い〜〜〜いぃ〜〜い〜〜 「 あると思います。

クロージャーで、お手軽Singleton(遅延評価)

クロージャーでお手軽Singleton(遅延評価)です。 Singletonにしたいクラスは、Singletonであることを意味する ISingletonインターフェイスを実装を義務付けます(ただの空インターフェイス)。 また、コンストラクタのアクセシビリティはprivateやprotected等…

yield returnでマイクロスレッド。んで、かえるうたの輪唱。

コルーチンでマイクロスレッドなクラスを作成します。 using System; using System.Collections.Generic; using System.Collections; using System.Threading; namespace WindowsApplication1 { /// <summary> /// MicroThread /// </summary> public class MicroThread { priva…

yield(いーるど)は、つまるところコルーチンなんだよね

今更感は否めないが、yield(いーるど)についてちょっとしたおさらいを。 yield(いーるど)はコルーチンであるご存知のとおり、yieldはC#2.0から主にイテレータの実装の簡素化を目的として導入された便利機能。 このyield キーワードは単体では意味を成さない…

C#でEval先から自身のメソッドが呼び出せる件

C#でもEvalできちゃう件については、既に語りつくされていますが、 Eval先から自身のアセンブリのメソッドを呼び出せる件については案外知られていないかも、とか。 私は知りませんでした。もしご存知でしたら、華麗にスルーしてくださいw using System; us…