ライセンスに関して
置いてあるサンプルは MIT/X ライセンスに準拠ということでお願いします。
他のページのサンプル
サイト内の他のページにもいくつか C# サンプルプログラムがあります。
-
「信号処理」
XSL 変換一斉適用
フォルダ中にある XML ファイルに一斉に XSL 変換をかけます。
オセロ
名前の通り、オセロです。 今のところローカルコンピュータ上での人対人のみで、ネットワーク対戦やコンピュータ戦は出来ません。
複素数クラス
複素数をクラス化してみました。 実用品ではなくて、実装の隠蔽・抽象基底クラスからの継承のサンプルとして作りました。 以下のような2つの方法で実装しています。
-
実部・虚部をメンバーとして持つ複素数クラス
CartesianComplex
-
絶対値・偏角をメンバーとして持つ複素数クラス
PolarComplex
また、これらのクラスを Complex
という抽象基底クラスから派生させています。
ラインアート
僕はGUI開発環境の提供されているプログラミング言語を新しく覚えるたびに ラインアートを作っています。 ほとんど同じプログラムを作ることでその言語の善し悪しを見比べているのですが、 今まで作った中でC#はもっとも作成が容易でした。
作るの楽だし、ちょっと凝ったものを作ってみようということで、 右クリックメニューで設定画面開けるようにしたり、 設定(線の本数、頂点の数、画面サイズ等)を XML で保存して、 次回起動時に設定を読み出すようにしてみました。
ビットフィールド
研究室の課題で Verilog HDL でソース書いてたんですが、 途中で、エラーチェック甘いし動作の重たいシミュレーションツールにぶち切れて、 ソフトウェアでアルゴリズムのチェックをしてから HDL 記述を書くことにしました。 その際に作ったのが、Verilog の変数みたいなビット操作を行うことの出来るビットフィールドクラスです。
このビットフィールドクラスの例を以下にあげます。
Verilog風記述 | BitField クラス |
---|---|
wire [31:0]w;
|
BitField w = BitField.Create(31, 0);
|
assign w = x[4:0];
|
w.Assign(x[4, 0]);
|
assign w = {x, y, z};
|
w.Assign(BitField.Concat(x, y, z));
|
assign w = {w[0], w[31:1]};
|
w.Assign(BitField.Concat(w[0], w[31, 1]));
|
assign w[0] = x[0] & y[0];
|
w[0] = x[0] & y[0];
|
assign w[4:0] = x[4:0] & y[4:0];
|
w[4, 0].Assign(x[4, 0] & y[4, 0])
|