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

C# ポインタ

C#

C# では、ポインタを使用してオブジェクトへアクセスするには、まずメモリアドレスを特定する必要があります。ところが、ガベージコレクションのために、オブジェクトへのアクセス中にメモリアドレスが変化しないとは限りません。そこで、キーワード fixed …

C# シリアル化

C#

MSDN の説明が一番分かりやすい。以下、参照。 シリアル化とは、オブジェクトの状態を永続化または転送できる形式に変換するプロセスのことです。シリアル化を補完するプロセスとして逆シリアル化があり、これは、ストリームをオブジェクトに変換するプロセ…

C# 非同期IO

C#

低速な記憶装置やネットワークに対して読み書きを行う際、同期させて行うならば、他の処理は長い時間待たなければなりません。もし、以下のように非同期で読み書きをすることができれば、読み書きの完了を待たずに他の処理を進めることができます。 public c…

C# スレッド

C#

ある副スレッドの実行が完了するまで、主スレッドの実行を待機させるとき、主スレッドを副スレッドに結合する、といいます。 以下は、myThreads というスレッドのコレクションがすでに定義されているものとして、このコレクションを走査していき、コレクショ…

C# マーシャリング

C#

プロセスとは、基本的に、稼動中のアプリケーションを意味します。 マーシャリングとは、プロセスのオブジェクトを境界越しに処理できるようにする過程のことです。例えば、Word のオブジェクトを Excel のスプレッドシート上に貼り付ける場合、プロセスの境…

C# アセンブリ

C#

アセンブリとは、.NET において、dll あるいは実行可能ファイルに見えるファイルのことです。アセンブリ内には、プログラムのコードに加え、gif などのリソースやコードのメタ情報なども含みます。 すべてのアセンブリはマニフェストを持ちます。マニフェス…

C# の属性、リフレクション

C#

属性とは、以下のように、メタデータを追加する仕組みのことです。 [assembly: AssemblyTitle("")] // AssemblyInfo.cs 内 [Serializable] Class MySerializableClass { } 以下のように独自の属性を作ることもできます。 public class BugFixAttribute : Sys…

C# のデリゲート

C#

デリゲートの機能は、C++の関数ポインタとほぼ同じものです。 public class MySort { public delegate int WhichIsBigger(Object o1, Object o2);//!<デリゲートの宣言 public void Run(Object[] arrObj, WhichIsBigger delFunc) //!<ユーザの作成したdelFun…

C# の例外

C#

例外がスローされると実行中のメソッドは停止されて、その例外に対する適切な例外ハンドラが見つかるまでスタックが巻き戻されます。 finally ブロックの処理は、例外が発生しようとするまいと実行されます。なお、finally ブロック内で、ブロックを抜け出す…

C# の文字列

C#

逐次的文字列リテラル "@" を使うと、字面どおりの文字として解釈されます。例えば、s1とs2、s3とs4は同じ文字列となります。 String s1 = "Hello\nWorld"; String s2 = @"Hello World"; String s3 = "C:\\Windows\\"; String s4 = @"C:\Windows\"; 関数 Str…

C# 配列、コレクション

C#

任意の数の引数を渡せるようにするには、以下のように params キーワードを使います。 public class Test { static public void ShowParams(params int[] vals) //!< params キーワード { foreach(int v in vals) { Console.WriteLine(v); } } static void M…

C# 任意の起動時のプロセスの引数の取得

C#

が、できてしまうので、プロセスの引数には、「パスワード」など大事な文字列を入れないようにしましょう! 他にどのような値が取得できるかは、以下の MSDN 内に詳しくあります。 Windows Management Instrumentation > WMI Reference > WMI Classes > Win3…

Incremental PCA の実装

Candid Covariance-free Incremental Principal Component Analysis を OpenCV で、実装してみました。結果はいかほどに。アルゴリズムはこんな感じ。 分析する画像。ただし、 主要ベクトル。 忘却の値。論文中では2〜4が良いと書いてある。 そして、から…

C# のインターフェイス

C#

メモ。 インターフェイスは、一つのクラスに複数に実装させることができます。 複数のインターフェイスを継承し、関数名が衝突した際には、少なくとも一方はインターフェイス名まで明示的に書く必要があります。 インターフェイス名を明示的に指定してメソッ…

C# の構造体は値型

C#

C#のクラスは参照型であるのに対し、C#の構造体は値型です。 ということは、以下のようなことが起こります。 public struct Thing { public String name; public Thing(String n) { name = n; } public override String ToString() { return "name=" + name;…

C# の変換演算子、キャスト

C#

C# でクラスに独自の変換を実装する場合、変換が成功することが保証されていて、何の情報も失われないならば、キーワード implicit を使いましょう。そうでなければ、explicit を使いましょう。 public class Fraction //!<分数クラス { private int numerat…

入れ子になったクラス

C#

C# では、クラスを入れ子にすることができます。以下は、サンプルプログラム。 public class Outside { private String name; public Outside( String n ) { name = n; } internal class Inside { public void Draw( Outside o ) { Console.WriteLine( "Name…