C#

delegateの型変換

C#

C#では次のcodeはcompile errorになります。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sample { class Program { public delegate void MyAction<T>(T arg); static void Main(string[] args) { Acti</t>…

Reflectionって遅いよね?

C++にはなかったReflection。 C#になってSerializeなんかで良く活躍するわけですが、 大量のインスタンスをReflectionを使って処理したりすると思いのほか時間がかかります。 そこでReflectionをなんとかして高速化しようというのが本日のエントリ。 NyaRuRu…

オレオレデザイナを作る?

とかってネタで適当に何度かにわけて記事書こうかと思ってるわけですが、 だれか知りたい人いるのかな? ちなみに内容は、自分でVisualStudioみたいなUIデザイナを作るよ〜って話。 大雑把に書くとSystem.ComponentModelがらみやらSystem.ComponentMode.Design…

CollectionEditor

System.ComponentModel.CollectionEditorというクラスがあります。 PropertyEditorでコレクションの編集をするときに使うわけですが、 こいつには単にICollectionを実装したクラスを渡してもだめです。 MSDNには↓のように書かれています。 継承時の注意 この…

GenericコンテナクラスのEnumerator

Dictionary.Enumerator>とかList.Enumeratorとかは IEnumerator,IEnumerator,IDisposableを実装したstructになっている。 なんで? なんでstructなんだ? ILレベルで見たときにcallvirtしなくてすむからかな?よくわからん。 謎だ。教えてエロイ偉い人!

既存のクラスの型コンバータを拡張(または置き換える)

既存のクラスの型コンバータを動的に拡張または置き換える方法を紹介します。 using System; using System.ComponentMode; using System.Drawing; namespace Test { static class Program { [STAThread] static void Main() { // Colorの型コンバータを動的…

IEnumeratorをIEnumeratorに変換する

IEnumerable<T>を実装するクラスで、 内部ではTでない別の型Uで保持しておきたいときがあるかも?と思ってちょっと作ってみた。 Genericsを使った実行時型生成をなんとなく使ってみたりしてる。</t>

DesignSurface

DesignSurfaceというものがあるらしい。 これを使うとVisualStudioのデザイナみたいなのが簡単に作れる模様。 何かで使いたくなることがあるかもしれないのでメモ。 http://msdn.microsoft.com/msdnmag/issues/06/03/DesignerHosting/default.aspx

genericsとtemplateの違い

わんくま 東京勉強会 #3でεπιστημηさんも話していたgenericsとtemplateの違い。MSDN2に概要のページがあったのでメモ。 Microsoft previous versions of technical documentation | Microsoft Docs

追記

↑の結論の実証コードを書いてみた。 string.emptyと""の参照比較を行うDLLを作る コンソールアプリを作り、最初にstring.Intern( string.Empty )する その後Assembly.LoadFromでDLLをロードして参照比較を行う コンソールアプリのコードは↓ using System; us…

某SNSの某コミュでの話

string.Emptyと文字列リテラル""について参照比較をした場合の挙動が、 .NET Framework 1.1と2.0で異なることについて。 MSDNを引っ掻き回してみると、 string.Internに.NET Framework 1.1と2.0では インターンの仕様が変わったよと書いてある。 String.Inte…

CLR Hosting API

CLR Hosting APIに関する資料メモ。 The Managed Hosting API – .NET Security Blog http://msdn.microsoft.com/msdnmag/issues/06/08/CLRInsideOut/default.aspx http://www.gotdotnet.com/team/clr/about_clr_Hosting.aspx Download Visual Studio 2005 Re…

パイプリダイレクト part3

C#

d:id:crimsonwoods:20060726の日記のid:Ozyさんからのコメント 問題は、実行するプロセスが無限ループになるようなコードで、かつランタイムエラーが起こる場合に、プロセスが正しく終了しないためのようです。 について、 出力がflushされる前にプロセスが…

Cygwin上のgccで実験

cygwinで使うgccのバージョンは次のとおり $ gcc -v Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs Configured with: /gcc/gcc-3.4.4/gcc-3.4.4-1/configure --verbose --prefix=/usr -- exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/l…

パイプリダイレクト part2

C#

id:crimsonwoods:20060722 のソースにちょこっと追加してStdErrも取れるようにしてみた。 当方の環境(XP sp2, .NET Framework 2.0)だとまともに動いている。以下ソースコード

パイプリダイレクト

C#

id:Ozyさんに触発されてちょっと実験してみた。CreatePipe,DuplicateHandle,CreateProcessをP/Invokeで呼び出して StreamReaderでStdOutputを読み出すというもの。以下ソースコード。

メモリ使用量測定

id:OzyさんがMSDNフォーラムに投げた質問。 これってピュアC#じゃないとだめなんだろうか? もしそうじゃなくてもOKなら、cmd.exeから起動させるターゲットを 自前のメモリ測定EXE経由でCreateProcessさせれば メモリ測定EXEで直接測定できそうなんだけどな…

.NET FrameworkにはBitmapButtonとかないんかな?

C#

VisualStudioのツールボックスを見てもBitmapButtonとかがない。 自作するしかないんかな。 うーん。めんどくさ(´・ω・`)Bitmapからリージョン作成とか自前でやるのもなんだかなぁ。 FormのTransparentColorを設定してお茶を濁すという手も・・・

C#の暗号・復号クラスにRC4の実装がない件

C#

↓System.Security.Cryptography.CryptoAPITransformをildasmで開いた画像 CALG_RC4が宣言されてないじゃないかー!!! orz

C#で暗号化

C#

C#で暗号化を行うにはmscorrlib.dll内のSystem.Security.Cryptography名前空間にあるクラスを用いる。 一般的によく使われる方法についてメモ。パスワードを使った暗号化 PasswordDeriveBytesクラスを使って鍵を生成する RC2CryptoServiceProviderやDESCrypt…

id:pmoky氏のコードを読んでみた。(part5)

たぶんこれが最後の予感。Serialize/Serializer.cs Mement -> Memento? FileStream使うのであればtry-finallyをするべき Runner/Executer/SimpleReflectExecuter.cs Reflectionでクラスを呼び出せるのはComponentDLLに定義されてるものだけらしい これ以上は…

.NET FrameworkにRC4の実装がない

.NET Framework 1.1にも2.0にもRC4の実装がないっぽい。 RC2はあるのになんでだろう。 と思ってRC2CryptoServiceProviderとか作ろうかと思いたったわけなんですが。。。 .NET Framework1.1にあるCryptoAPITransformってクラスが、 継承もインスタンシエーシ…

id:pmoky氏のコードを読んでみた。(part4)

肝の部分というか、2chでネタになっていたあたりのコードを読んでみる。FileLoader/TextLoader.cs 特に無しFileLoader/TextFileSearcher.cs Initはstatic-initializerでおk Stringクラスはimmutableなクラスだから逐一代入するよか、一時無名オブジェクトを…

id:pmoky氏のコードを読んでみた。(part3)

id:pmoky氏のブログで議論がさくっと進行してる。 土日遊んでた&言語処理関係の話題は門外漢なんでネタについていけない orz とりあえずStoryGeneratorの肝の部分あたりから読んだほうが良さそうだ。 ということで続き。Runner/Runner.cs Exitでthread.Abor…

MSDNにこんなの発見。C#でのシングルトンの実装 http://www.microsoft.com/japan/msdn/practices/type/Patterns/enterprise/ImpSingletonInCsharp.aspC#のstatic-initializerとか変数の初期化構文っていいよねぇ・・・。 C++にもほすぃ(std::mapの静的初期…

id:pmoky氏のコードを読んでみた。(part2)

昨日の続き。今みてるのはSGCoreっていうプロジェクト。 まだ全然全体像がつかめてないから気になったところからとりあえず書いてく。 後で気づいたら追記で。 Window/BackBuffer.cs Texture texとかSurface srfcとか下手に略すと余計わけわかんない。 スペ…

.NET2.0にSSLを扱うストリームが追加されてるっ!

MSDNを見ていたらSystem.Net.SecurityにSslStreamとかいうクラスが追加されていた。 System.Security.CryptgraphyのX509Certificateを使って自前実装しなくても済むじゃん! .NET2.0ヒャッホー!

id:pmoky氏のコードを読んでみた。

まとめサイトにはってあるURLからZIPファイル落としてみた。 アップローダなるものをはじめて使ったんだが、使い勝手がわからずちと時間がかかったorz どれから読んだらいいのかわからんのでとりあえず目に付いたものをかたっぱしから見て見よう。 ちなみに…