C#

Genericsメモ

型パラメータの制約 派生制約 class Base{} class Derived where T : Base{} interface制約 interface IBase1{} interface IBase2{} class Derived where T : IBase1, IBase2{} 値型制約 class Hoge where T : struct{} 参照型制約 class Hoge where T : cla…

動的な型生成

C++で型が作成されるのはコンパイル時だったのだが、C#やJavaでは実行時に型(クラス)が作成可能だ。 おおっ、ちょっと感動。これは何か新しいことができそうだ C#の場合・・・System.Reflection.Emit.TypeBuilder Javaの場合・・・java.lang.reflect.Proxy…

beforefieldinitフラグ

シングルトンクラスでバグが出た。リリース時のみ発生するバグだ。たかがシングルトンと思って油断していた。...というわけでstatic変数の初期化について考察。 class Test{ static object o = new object(); } この場合、beforefieldinitフラグがONになり、…

プログレスバー

C++のときから考えていたのだが、プログレスバーというのは結構厄介だ。完璧を目指すならば 実行すべき重たい処理は別スレッドで実行する メインスレッドではプログレスバーを出して待機(Sleep?)しておく 別スレッドの重たい処理からメインスレッドのプログ…

EXCEL

VisualStudio2005からEXCELを使用する機会があったのだがえらい苦労した。 苦労した原因は実際に起動されるエクセルがそれぞれのローカルマシンにinstallされたEXCELということだ。そしてバージョンは悲しいことにEXCEL97,2000,2002,2003と混在していた。 そ…

リフレクションを使ったインデクサの呼び出し

public class Hoge { public string this[int i] { get { return (i * 2).ToString(); } } } class Program { static void Main(string args) { object o = new Hoge(); object result = o.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, …

??

まず次のJavaコードを見てほしい。 String str = GetString() ; if( str == null ) { str = "" ; } ... このコードは文字列を取得した後にnullチェックを行っている。 Javaで堅牢なコードを書こうとすると、すべてのオブジェクトに対してnullチェックが必要…

DataGridViewのソート

DataGridViewのソートは実はstable_sortではないっ! ということでstable_sortにしてみた。 C#(というかVS2005)のすばらしいところはイベントを駆使することによって あらゆる動作を自由自在にカスタマイズ可能な点だ。 まあ、あらゆるは言い過ぎだがかなり…

structのパフォーマンス

マイクロソフトのページにclassとstructのパフォーマンスに関する記事が載っていた。 http://www.microsoft.com/japan/msdn/net/general/dotnetperftips.aspx (※ValueType を使った設計のとこね) で、肝心の速度を測ってみた。 structclass debugVS起動 5821…

public T this[int index] { get; set; } 上記はListの定義情報。 むっ、戻り値がTになってる。 ということは List list = .....; list[0].X = 0; // コンパイルエラー // list[0]で取得するのが一時オブジェクトであるため やっぱりね。

ガベージコレクタの弊害

C++ではオブジェクトの寿命を完全にコントロールできる。そのため必ず行わなければならない処理はデストラクタで行うというテクニックが有効だった。ところがC#ではガベージコレクタが導入されたためオブジェクトの寿命がコントロールできなくなった。 つま…

classとstruct

C#

この週末、classとstructについて考えていたがとってもモヤモヤしている。 現段階では、うまく結論付けることができなかった。 とりあえずわかったことをメモっておく。 オブジェクトの比較 - struct(System.ValueTypeを継承) - ● Equals System.ValueType.E…

VC++6.0→VS2005C#

C#

開発環境がVC++6.0→VS2005C#で便利になったランキング GUIがサクッと作れる VSS操作がずいぶん楽チン include(using)文を自動生成してくれる インテリセンスが真のインテリとなった(真は言いすぎか?eclipseより勝ってると思う) クラス、メソッド、ネーム…

暇です...part4(最終回)

ついに今週で暇な状況も終わり。来週から新規案件が始まる。 iText 生産管理システム、帳票システムなどシステムでは多くの場合、Word,Excel,PDFといったファイルとの連携が必要となる。例えばJavaで開発しているなら Word,Excel→Jakarta POI PDF→iText とい…