2010-01-01から1ヶ月間の記事一覧

どんなオブジェクトでもコピーできる汎用のディープコピー処理(ICloneable, MemberWiseClone, Serializable, BinaryFormatter, MemoryStream)

シリアライズを利用した汎用のオブジェクトのディープコピー処理について整理しました。BinaryFormatterを使用してMemoryStreamに対してシリアライズ/デシリアライズを行いオブジェクトのメモリイメージのコピーを作成するテクニックです。理論上、Serializ…

メールマガジンを創刊しました!「きちんと学ぶ .Net Framework[C#] 」

.Net Frameworkに関する基本事項を取り扱うメールマガジンを発行することにしました。以下、内容の引用ですが興味のある方は、是非、登録ください。 きちんと学ぶ .Net Framework[C#]は、マイクロソフトの開発基盤である .Net Framewo rkの基本事項を体系的…

大文字小文字を無視するキーコレクション。(HashTable,SortedList,Dictionary,SortedList)

C#

キーと値を持つコレクション。非ジェネリックでは、HashTable,SortedList、ジェネリックではDictionary,SortedListと4種類のコレクションがありますが大文字・小文字を無視する際の記述方法が異なります。非ジェネリックは、使う場面も少なくなって来ていま…

ジョナサン・ジットレイン 「親切に支えられたWeb」

TEDでユーモアと希望にあふれたインターネットに関する講演があったので紹介したいと思います。 ジョナサン・ジットレイン 「親切に支えられたWeb」 http://www.ted.com/talks/lang/jpn/jonathan_zittrain_the_web_is_a_random_act_of_kindness.html インタ…

実行時に読み込んだアセンブリをアンロードする。

実行時の任意のアセンブリを動的に読み込むことは出来ますが、アンロードする場合はアプリケーションドメインごとアンロードする必要があります。Win32Apiでは、LoadLibraryとFreeLibraryによって該当DLLだけをロード・アンロードできましたが.Net ではアプ…

Windowsサービスを作成する。(System.Configuration.Install.Installer,System.ServiceProcess.ServiceBase)

C#

Windowsサービスを作成するためには最低限2つのクラスを作成する必要があります。■Serviceの登録:System.Configuration.Install.Installer まずは、.NetアプリをWindowsサービスとして登録するインストールプログラムを実装します。.Netではカスタムインス…

特殊コレクションを利用して軽量のブール配列を作成する。(BitVector32,BitArray)

C#

C#,VB.NETのブール値(bool,Boolean)はTrueとFalseの2値しか保持しませんが、1変数あたり4バイト(32Bit)のメモリ量を必要とします。 簡単に言うと残りの31ビットは無駄な状態となります。大量のブール値を保持する場合、この非効率さが問題となる…

スレッドセーフな配列(List,Dictionary,Queue,Stack)を作成する。(SyncRoot,Synchronized)ジェネリック版。

C#

基本的に配列の操作はスレッドセーフではないので(あるスレッドが配列に追加・削除している途中で、別スレッドでFor Eachしたら正しく列挙できない)マルチスレッドで配列のデータを操作する場合は、同時に実行されないようにロックする必要があります。非…

配列のジェネリック型と非ジェネリック型の対応(ArrayList,HashTable,Queue,Stack)

C#

非ジェネリック → ジェネリックの対応一覧。ジェネリック型は、Objectを操作する非ジェネリック型と違い、配列に格納する型(String,Integer・・etc)に合わせたタイプセーフな配列として定義できます。ArrayListとHashTableは名前が変わっているので要注意…

スレッドセーフな配列(ArrayList,HashTable,Queue,Stack)を作成する。(SyncRoot,Synchronized)非ジェネリック版。

C#

基本的に配列の操作はスレッドセーフではないので(あるスレッドが配列に追加・削除している途中で、別スレッドでFor Eachしたら正しく列挙できない)マルチスレッドで配列のデータを操作する場合は、同時に実行されないようにロックする必要があります。■lo…