Csharp

MethodInfo.GetGenericArguments() と System.RuntimeType と配列の covariance

概要 配列の covariance のおかげでデバッグに手間が掛かった、という話。 キーワードについて MethodInfo.GetGenericArguments メソッド これは、メソッドの型引数を表す Type[ ] を返す。 System.RuntimeType は、System.Type の .net 上における実装。 Sy…

Generic な型への演算子適用を可能にするユーティリティを書いてみた

元ネタ ref: 早く C# 4.0 出ないかなぁ。 - ++C++; // 管理人の日記 ref: [サンプル] ジェネリックな複素数型 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C コード 本体: SUtils/SUtilsCore/Operators UnitTest(兼サンプル): OperatorsTest.cs …

a == b かつ !(a = b)

C# の言語仕様には、表題の通り a == b !(a !(a >= b) を全て満たす値の組み合わせがある、という小話。なお、ユーザー定義の演算子で〜というオチではない。(続きを読む、で隠してみた)

XML ドキュメント コメントでの、ジェネリックな型やメンバに付く

要約 XML コメントにて Generic な型やメンバを参照する場合、IEnumerable{int} のように書くことができる。ちょっとしたことだが、忘れがちな事である上、ぱっと検索しても出てこなかったのでメモってみた。 詳細 C# の XML コメントにて、特に、 や ... な…

インスタンスが属するクラスをあとから変更する操作を C# で 〜RealProxy バージョン〜

元ネタ インスタンスが属するクラスをあとから変更する操作をいろいろな言語で - Smalltalkのtは小文字です C#と諸々 インスタンスが属するクラスをあとから変更する操作を C# で 概要 元ネタにある C# 版では、オブジェクトへの参照が持っている型ハンドル…

RealProxy (実プロクシ) と透過的プロクシと IRemotingTypeInfo

CLI(や CLR) は、通常はスタックベース*1の世界でメソッド呼び出し*2を処理している。しかし、CLI にはそれらスタックベースの処理を、メッセージと呼ばれるオブジェクトを受け渡す形に変換する機構が備わっている。どのような機構かと言うと、透過的プロク…

CLI や C# における -0 (マイナスゼロ) や符号のコピー

サンプルコード float pZero = 0.0f; float nZero = -0.0f; // True Debug.WriteLine("pZero == nZero: " + (pZero == nZero)); // False Debug.WriteLine("+∞ / pZero == +∞ / nZero: " + (float.PositiveInfinity / pZero == float.PositiveInfinity / nZe…

浮動小数の比較の実装

一つ前のエントリ: http://d.hatena.ne.jp/saiya_moebius/20090111/1231669765 「float と 80bit FPU」 参考: ��ư�������������� (Boost の close_at_tolerance についてのドキュメント)浮動小数な値同士を比較することについて、Boost のドキュメントに ��ư…

C# 3.0 自動実装プロパティがどう自動実装されるのかを調べてみた

自動実装プロパティがどう自動実装されるのか気になるので調べてみた。 なお、仕様書を読んだわけではない点に注意。 動作を調べるために使ったコンパイラ .net framework 3.5 の csc mono 2.0.1.0 の gmcs コンパイル結果 csc にしろ gmcs にしろ、コードは…

float と 80bit FPU

Annotated C# Standard を読んでみたシリーズその 2。 同じ計算の結果なのに != になる、という話。参考: 2007-06-03 何はともあれサンプル public float f1 = 2.82323f; public float f2 = 2.3f; public float member; public float Calc() { return this.f…

C# における仮想メソッドと非仮想メソッドのオーバーロード解決

Annotated C# Standard を読んでみたシリーズその 1。 オーバーロードの解決が一見すると謎な扱いになってしまうという話。 何はともあれサンプル class A { public virtual void Method(int value) { System.Diagnostics.Debug.WriteLine("A.Method(int)");…

今年最初の読書: .net や C# について書籍を当たってみた

(少し遅くなりましたが)あけましておめでとうございます。実家から筑波への帰りに、新宿駅近くの紀伊國屋書店に行ったところうっかり書籍を大量に買い、そのまま帰宅したところ風邪気味なのも相まってうだうだとしていたのでした。そこで買った書籍のうち、…

SUtils/Serialization 1.1.0 にて MessagePack, JSON 両方に対応してみた。

関連リンク 2008/12/28 追記: リンク先を 1.1.0 から 1.1.1 へ差し替えました*1。 バイナリダウンロード: lang/CSharp/tags/081228/SUtils/Serialization/bin ドキュメント類 wiki: Serialization | SUtils Project | Assembla Sandcastle で生成した HTML: …

MessagePack C# 実装を作ってみた

Notice: こちらのエントリに、より新しいバージョンについての記述があります。MessagePack の PHP(PECL) 版の実装を作ろうと思っていたのだが、諸般の事情もあって .net/mono 版を急ぎたかったので、とりあえず C# でさっさか実装してみた。ひとしきりの Un…

スレッドごとにローカルなシングルトン(的なもの)

// TODO: あとでちゃんと動作確認 (なお、CodeContract 関連以外は動作確認済みである)C# でスレッドごとに固有のインスタンスを提供できるようにするという小ネタ。 エントリの変更点 09/02/01 スレッドセーフさについて言及を増やした エントリ内部を小見…

FrameDimensionsList, SelectActiveFrame を使って画像の複数フレームにアクセスする場合の注意点

ref: System.IO.FileStreamを使用して呼び出したマルチTiffの表示について: DOBON.NETプログラミング掲示板過去ログ昔にもハマった記憶があって、昨日またハマってしまったのでメモ。 以下は、.net framework にて画像の複数フレームにアクセスするために Im…

Msgpack を実装するのだろうか?

id:viver の Msgpack の C#, PHP バインディングを実装してみようか的な気分になったので、OSS と仲良くするためのアウトプット用*1にでも、ととりあえず blog をクリアしてみた。うまくいけば、内々に作っている分散オブジェクト/RPC機構に使えるかも(JSON …