C#

nested class, static class, etc

class A { public class B { public void method(A a) { a.field = 10; // OK field = 10; // error } } private int field; }BはAのprivate, protectedなフィールドにアクセスできるけど、Aのインスタンスが必要。 class A { public static class B { ... }…

LinkedListの仕様が最悪

C#

頭悪すぎるんじゃないかと…

FileStreamはデフォルトでバッファリングされています

デバッガは優秀なのに…

C#

俺のマルチスレッド経験がなさ過ぎるせいでデバッグがおわんね。うー。

再描画の禁止

コントロール内部の情報をいじるたびに再描画が発生する可能性がある場合は、再描画を一時的に禁止してその間に大量に処理をするのがWindowsだと一般的……だと思ったので調べてみたらちゃんと用意してくれてあった。大量に処理を始める前にBeginUpdate、処理…

もしかしたらそろそろC#歴1ヶ月かもしれん

C#

新しい機能を色々覚えてきて最初の頃のコードを直したくなってきたけど我慢我慢…。

こんなInvokeってARIKA(再帰Invoke)

メソッドHogeがあったとする。Hogeの中ではコントロールhogeを操作する。そこでHogeの先頭、もしくは前提条件チェック終了後に if (hoge.InvokeRequired) { hoge.Invoke(new HogeCallback(Hoge), 引数); return; }こうしてやれば一々呼び分けも発生せずに意…

別スレッドからコントロールを操作する(Invoke)

C#で別スレッドからコントロールを操作したい場合はInvokeを用いると良い事がわかった。基本的に以下のように用いる。 if (control.InvokeRequired) { control.Invoke(new delegateの名前(呼びたいメソッド), 引数); } else { 呼びたいメソッド(引数); }とす…

Debug&マルチスレッド時のコントロールの挙動

作成されたスレッド以外から操作されると例外が発生するらしい。確かに安全と言えば安全だけど…。CheckForIllegalCrossThreadCallsをfalseにすると例外が発生しなくなる……はずなんだけどまだ発生する。なんだ…。とりあえず別スレッドから発生した奴を元のス…

friendがほすい

C#

このクラスからしか呼ばれて欲しくない!っていう状況がある。このクラスからだけは追加したり消したりできるが、他のクラスではreadonlyみたいな。設計である程度どうにかできるんだけど、やっぱり色々冗長な部分が出てくるし、リファクタリングもしにくく…

通常時の構造体のフィールド(笑)のアラインメント事情

経験則に基づくソース無し&環境に依存しまくりのメモなので絶対に参考にしないように。勝手に参考にして死なれても責任取れない。プリミティブ型だけで構成された構造体でちょこっと調査してみたところ 構造体の先頭アドレス → 不明 フィールドのオフセット…

バイナリファイル関連

構造体を書き込むのでアラインメント関連の調査 エンディアン調整は必要か? CreateFileとか使った方がよさげ? メモ: FileStream → 微妙 BinaryReader → ウンコ 構造体の中身をbyte[]に変換→それを書き込み?(一応固定長だが4nとかでアラインメントした方が…

色々とオーナードローできるじゃん

最近気付いた。MSDNでTreeViewとかそう言うコントロール名で検索するとSystem.Web.UIの方のコントロールが出てきてしまい、それを見ると色々と勘違いする。System.Windows.Formsの方に入ってるコントロールは大体想像通りのことができる。もっと早く気付きた…

TreeViewにチェックボックス付いた

TreeView.CheckBoxes を true にするだけでおk。でもCheckBoxの下の枠が欠けててださいwwwww ON/OFFはTreeNode.Checkedで操作。

GetModuleFileName→System.Diagnostics.ProcessModule.FileName

でおk。1/31追記: Process.GetCurrentProcess().MainModule.FileName

無名クラスほしす

C#

Javaのアレね。え?delegateで済ませって?済ませられねーから困ってんだよちくしょう。本当に一つのメソッドの中身をちょこっと書き換えるだけなのに新しいクラスなんて定義したくねーよ。

Observerパターンとイベント

C#

今回は本格的C#初体験という事もあってイベントを使わずに念のためObserverパターン通りにclassやinterfaceを作ってみた。どちらが良いのかは断言しかねるけど、C#だとイベントを使うと楽だし、色々と継承する必要もなく良いかもしれないと思った。でもinter…

C#にはラベル付きbreak/continueが無いそうです

C#

goto?この時代にgoto?いや、俺別にgoto拒絶症じゃないから良いけどね。しかしgotoですか。

パネルが大量発生中

C#

何とかしたい…

枠がださい

C#

orz

TreeViewは出来る子

C#

効率よく動的に操作するための手段が色々と用意されているようなので頑張ればなんとでもなるんじゃないかと思ってきた。見た目は派手にできないけど。

TreeViewのオーナードロー

をしたかったんだけど、どうもWndProcを書き換えたりする環境依存な方法しかない模様。このくらい用意してくれても良いのにって思うけど、環境によってはそもそもそんなことができないのかもな。切ない。まぁそれは良いとして、そうなるとTreeNodeのTextをも…

ReferenceEquals

参照を比較したい場合は書くのがめんどくさいけどこれを利用した方が良さそう。やっぱり演算子のオーバーロードができると便利だけど怖いね。

nullをasしてもおk?

Type obj = nullなもの as Type;これは合法なのかどうか。動作させてみた感じだとおk。ただ合法だというソースは未確認。言語仕様入手してくるのがめんどかったのでとりあえずtodo。

インスタンス毎の固有値がほしす

ストレートに書くとメモリアドレスが欲しいです!でもC#だとあるインスタンスがメモリ上の特定の位置に固定されるとは限らないらしいですねムキー。GetHashCode定義するのはだるいしなんかお手軽な方法ないのかな。

C#でSingleton

http://www.microsoft.com/japan/msdn/practices/type/Patterns/enterprise/ImpSingletonInCsharp.aspx プロパティ良いね。とりあえずまとめておくと 遅延生成が必要なければ簡単な実装で十分 遅延生成が必要な場合はlock用に一個objectを作って普通にDouble…

3.0使いてぇ

C#

夢が広がりすぎて困る

typedefが欲しい

C#

Genericとか言ってもさー、C++っぽいtypeofとかtypedefがないと激しいことできねー気がするんですが、そう言うことしちゃいけない言語と解釈すれば良いんだろうか。寒いなぁ。usingとか同一ファイル内だけだしなー。まぁそれはそれでありがたいんだけど。と…

STLが欲しい

C#

切実に

setがねぇ

C#

まじでー