C#
書いていること守って組み合わせているのに、optionsの値がダメーというArgumentException が発生するので1つ1つ組み合わせたところ、ようやく理解。 まずCompareOptionsは以下の定義。ビットの組み合わせで指定できるとなっている。 [Flags] public enum …
以下のようなのを書いていたんだけど、リリースビルドしたら、式の評価がまるごとなされなくなって大変なことに。 System.Diagnostics.Debug.Print("permissions=" + (permissions = session.CheckPermissions())); 上記処理では、あるケースでは session.Ch…
もーなんだよー。Processは p.StandardOutput.EndOfStreamとかロック上等なので絶対見ちゃダメ。よくよく見れば、p.OutputDataReceived、p.ErrorDataReceivedというちゃんとしたイベントハンドラが用意されているじゃなぁ〜い! ぐぐって上位に来るのがアン…
標準入力と標準出力それぞれにReadToEndしているスレッドをスタートさせてから、process.WaitForExit();してプロセスが終わっただろうから、readStdOutThread.join() とかしているんだけどたまにReadToEndから復旧しない。 ググったら。こんな情報が。http:/…
久々にC#を触るとまた色々忘れていたことに気付く。Timer使うときはTimerじゃなく、DispatcherTimerだった。タイマーイベント内でコントロールなどの資源を参照しようとすると、他のスレッドの持ち物なのでうんぬんかんぬんというエラーが出るのでDispatcher…
== と != をオーバーロードしたクラスがあって、そのインスタンスを == null で比較すると次のようなビルドエラーが出る。 次のメソッドまたはプロパティ間で呼び出しが不適切です: 'MyClass.operator == (MyClass, object)' と 'MyClass.operator == (objec…
DragEventArgs.Data.GetData()の話。"Shell IDList Array"でMemoryStreamをとってセッセと昔ながらにSHGetPathFromIDListを読んでいってstringを返す関数を作ってしまった。しかもユニコード文字が含まれているファイル名が?になっちゃうし((ピンボケをワイ…
とても不思議な現象にあっている。List は IList を実装していて、IListはICollectionの継承。でICollectionにあるはずのIsReadOnlyが、Listからは呼び出せない。 List<string> list = new List<string>(); bool a = list.IsReadOnly; // ← そんな定義は見つからないというコ</string></string>…
value == double.NaN だとダメで、 double.IsNaN(value) じゃないと引っかからない。
今日は C# 2008 Expresss の終了時にプロセスが死んで送信しますか?と百発百中いわれる。快適なiMacなのにフォームエディタも設定エディタも激重。そしてフォームエディタがたまに死ぬ。でかいソリューションとはいえ酷いなぁ。
System.Action というのがあったのか〜。なんだ〜。今まで都度定義していたよ。今回のプロジェクトは3.5だから全部Actionに置き換えよっと。
昨日のつづき。IDictionary> 相当のものを作成してXMLシリアライズできるようになった。こんなの。 public class ClassAttributes { public ClassAttributes() { ClassNames = new StringCollection(); Attributes = new List<Attributes>(); } public StringCollection </attributes>…
Javaでいうところの、Class 相当のものが欲しい。制約条件をこんな感じで拡張してもらいたい。 T loadXml<T, TT>(TT type) where TT: typeof(T) 追記 ↑は全然的外れで、制約条件にするどころかそもそもTTなんて引数が要らないことが分かりました。理解に至ったのは</t,>…
昨日から色々試行錯誤中。やりたいことは、XmlブロックがネストするNameValueCollectionの保存・復元。たぶん http://msdn.microsoft.com/ja-jp/library/system.configuration.configurationconverterbase.aspx がゴールかとは思うが。 Xmlでの保存([global:…
自身のネームスペースからの相対クラス名と他のライブラリのルートのネームスペースが被ってしまい、どうすりゃいいのか保留していたけど、自動生成されるSettings.csをいじっていて解決方法を知った。 絶対指定するためには、global:: をつければ良くて、こ…
System.Linqをusingするかしないかだけで、配列オブジェクトのメソッドが増減する。おもしろい。 C#3.0から(というかVS2008から)の拡張メソッドの好例です。簡潔なまとめがこちらにあります。
2.0、3.0とすすむにつれてギミックがどんどん増えてますねー。いじるだけいじった感じ。Null許容型やNull合体演算子は?が「ヌルかも?」と言ってるように見えてかわいい。エスケープ不要なヒアストリングとか(バージョンいつからか知らないけど)。ラムダ式…
サイドバー的なもののために操作をしたが他のウィンドウが最大化するのを合わせられないなーと思ったら、SystemParamerterInfoじゃ足りなさすぎで、ちゃんとSHAppBar関連のAPIとメッセージ応答するWndProcを書かなきゃならんかったのであった。久々すぎてそ…