C#

GetHashCodeのパフォーマンス

あまり気にしていなかったのですが、プログラミングMS .NET FRAMEWORK 第2版 (マイクロソフト公式解説書)を読んでいたら、 System.ValueTypeのGetHashCodeの実装は、リフレクションを使い(つまり遅い)、型のインスタンスフィールドのいくつかをまとめてXORを…

Reflectionによるメソッド呼び出し時の例外

C#

ちょっと嵌りました。 using System; class MyException : Exception {} class Foo { public void Bar() { throw new MyException (); } } static class Program { static void Main () { Foo foo = new Foo (); try { foo.Bar (); } catch (MyException) { …

久々に

Nemerleのsvnを覗いてみたら今月、0.9.4が出るような記述がありました。1年半ぶりでしょうか。(^^; ほとんどが内部的なリファクタリングですが、新機能としてはC#3.0のAuto Propertyが実装されているみたいです。個人的にはmutableキーワードをvarにして、…

Partial Methods

C#

C# 3.0でこっそり(?)追加されたPartial Methodsですが、戻り値がvoidでなければならないとか、妙に恣意的な制約が気になります。特定の場面で使うことしか考えていない風に見え、それを言語仕様に組み込むのはどうなの?って感じが・・・確かにPartial Me…

echo

C#

http://golf.shinh.org/p.rb?echo ふと思い立ってやってみましたが、どーやっても72byteになんかなりません。(^^; using C=System.Console;class X{static void Main(){C.Write(C.In.ReadToEnd());}} これで78byte。72byteって言ったら、 class X{static voi…

99 shinichiroes of hamaji

C#

http://golf.shinh.org/p.rb?99+shinichiroes+of+hamaji こっちは頑張ってみました。(^^;

Mediatorパターン

C#

デザインパターンの本は何冊か読みましたが、いつも途中で飽きてしまい前半で紹介されているパターンしかまともに覚えてなかったりします。(^^;アジャイルソフトウェア開発の奥義作者: ロバート・C・マーチン,瀬谷啓介出版社/メーカー: ソフトバンククリエイ…

C#3.0 自動プロパティ

C#

今頃、Microsoft Download Center: Windows, Office, Xbox & Moreを入れました。C#3.0には自動プロパティという機能が追加され、get、setと書くだけでプロパティが生成されます。 using System; using System.Linq; using System.Collections.Generic; using…

C#3.0 Expression Trees

C#

C#3.0では何気にExpression Treesに興味があって弄っていたのですが、「Lambda Parameter not in scope」と例外が飛びまくって悩みました。 using System; using System.Linq; using System.Linq.Expressions; using System.Collections.Generic; using Syst…

国際化対応2.0

その昔、.NET1.0向けにネタにしましたが、バージョンアップということで。(^^;Visual Studio 2005では、カスタムツールが強化されたので、リソース回りが扱いやすくなっています。仕事上よくあるのが、文字列の管理をどうするかで、C/C++だとヘッダファイル…

IteratorによるUIの分離

C#

ユーザインタフェースを持つアプリケーションを書く場合、UI部分とロジックをうまく分離できないことがあります。たとえば、コンソールから数値を入力し、その平均値を求めるようなことを考えてみます。 using System; class Program { static void Main () …

??演算子

C#

素朴な疑問なんですが、??演算子ってなんて呼ぶのでしょうか? 手元の本によるとnull置き換え演算子らしいのですが、まったく知りませんでした。(^^;

メタプログラミングツールとしてのIronPython

リフレクションを使えばメタプログラミングが出来ますが、ちょっと面倒です。たとえば、以前やったネタですが、 http://d.hatena.ne.jp/akiramei/20050612/p1 インタフェースの委譲を自動化するだけなのに結構なコード量になっています。リフレクションをや…

IronPythonでAOPモドキ

http://d.hatena.ne.jp/akiramei/20060723/p3の続き。最初に知っておかないといけないことは、IronPythonのクラス(型)が.NET上では型として認識されないということです。IronPythonのクラスはメンバーとしてDictionaryを持っていて、その中にプロパティやら…

IronPythonでDIモドキ

http://d.hatena.ne.jp/akiramei/20060702/p1 上記のサンプルはS2.NETを使っていますが、これをIronPythonを使って書き換えてみます。

はじめてのS2Dao.NETその3

複数テーブルをリンクする場合ですが、 ビューのような仮想的なDTOを作成して自由にマッピングさせるという方法もあります。その場合はSQLの自動生成は使えませんが・・ id:sugimotokazuyaさんに教えて頂いたので、早速実験です。

はじめてのS2Dao.NETその2

クラスとテーブルが1対1の場合は、上手く行くことが分かったので、N対1も試してみました。

はじめてのDependency Injection(DI)その2

http://d.hatena.ne.jp/akiramei/20060702/p1をSpring.NETに置き換えてみる。

はじめてのS2Dao.NET

S2Dao.NETとは S2Dao.NETはマッピング情報をXMLに記述しないO/Rマッピングフレームワークです。 S2Container.NET上で動作します。 マッピングのためにXMLをガリガリ書くのが面倒なので嬉しいところ。というわけで、Oracleに接続して単純なCRUDを行うサンプル…

はじめてのDependency Injection(DI)

仕事のプロジェクトがJavaになりそうな雰囲気だったので、先週、ちょこっとだけJavaの勉強していたら、DIという単語が目にとまりました。日本語に直すと「依存性注入」らしいのですが、なんだかよく分からない言葉です。Javaの世界に疎くてこれが主流なのか…

型推論

id:kuripさんのところより http://d.hatena.ne.jp/kurip/20060606#c List.ConvertAll<U>(delegate {...}); コイツが上手く推論してくれないため、型パラメータを明示的に指定することを要求されます。Nemerleだと型推論が頑張るので、 using System; using Syst</u>…

OutOfMemoryExceptionを避ける

.NET2.0では新規にMemoryFailPointというクラスが用意されたようです。OutOfMemoryExceptionはメモリが不足したら発生しますが、MemoryFailPointクラスを使うと事前に確保可能かチェックすることが出来ます。

db4oでの排他制御その2

C# DB

チュートリアルによるとセマフォを使って自前で行うみたい。ただ、セマフォ自体は名前に対する排他制御なので、ロックしたいオブジェクトの識別子を使って擬似的にオブジェクトロックを行うことになるのかな。

db4oでの排他制御

C# DB

オブジェクトデータベースのdb4oが面白そうなので、ちまちま弄っています。データベースで一番重要なのは如何にデータを守るかなので、排他制御がとても気になります。と言うわけで簡単なクライアント/サーバーモジュールを作成して実験してみました。が、色…

拡張メソッドによるGetEnumerator()

C#

「C# 3.0」foreach should consider GetEnumerator extension method なるほど、こういう考え方もありますね。MSの回答によると、

実行ファイルの暗号化

.NET(というかIL)の場合、逆コンパイルで中身がまる見えになり、商用アプリだとそこが嫌われることがあります。ぶっちゃけ、x86ネイティブコードなら問題ないか?と言えば、全然そんなことないのですが、ILがあまりに手軽なのが駄目なんでしょうね。あと、難…

何を隠しているのか

C#

継承したクラスで親クラスと同名のメソッドを定義すると、親クラスのメソッドを隠してしまいます。 app.cs(14,19): warning CS0108: 'Bar.Add(double, double)' は継承されたメンバ 'Foo.Add(double, double)' を非表示にします。非表示にする場合は、new キ…

メソッド単位の変数管理

C#

http://d.hatena.ne.jp/yaneurao/20060506#p1 やねうらおさんのコメントから。 例えば、特定のメソッド内から参照しないprivateなメンバ変数を、そのメソッド内で宣言できる構文 例) member int i; のようなものも欲しいです。私は、ある処理書くとき必要と…

匿名メソッドの仕組み

C#

C#2.0の匿名メソッドは直感的でない動作をするので、あちこちで議論になります。原因の1つにコンパイラがソースコードからは想像がつかないコードを生成していることが挙げられると思います。コンパイラがかなりのコードを生成していますが、大きく分けて3…

続Genericsとunsafe

某所より。 だもんで、いま、T array, int indexを管理するPointerという クラスをgenericsで書いて、C++的なポインタ演算や、 S : structへの強制castが出来ると便利なのに、と思ったんですが(´ω`) そのままズバリなクラスは作成出来ませんでしたが、こんな…