checkpoint

自分用のIT技術系ノートです。古い情報や間違っている情報もあるので注意。

C#

リフレクションを使って(ジェネリック)メソッドを実行する

public static string TestMethod1(int input) { return "Test Method 1 : " + input.ToString(); } がProgramクラスにある場合、これをリフレクションを使って呼び出すには var mi = typeof(Program).GetMethod("TestMethod1"); var ret = mi.Invoke(null, …

FlagsAttributeの使い方

列挙型にFlagsAttributeを付与すると、フラグとして扱うことができます。 [Flags] public enum Color { Red = 1, Blue = 2, Yellow = 4, Green = 8, } 値は2の累乗になるようにします。フラグの立て方。(RedおよびBlue) Color c = Color.Red | Color.Blue…

メソッドのオーバーロード作成時にありがちなバグ

例えば、下の様なメソッドがあって public void ExampleMethod(string param1, int param2) { (省略) } これに、引数が「param1」だけのオーバーロードを作るとします。 その場合正しくは、 public void ExampleMethod(string param1) { this.ExampleMetho…

ソースコードの中にSQLを書く場合

ソースコードの中にSQLを書く場合、これは文字列になるので sql = @"SELECT * FROM hoge WHERE fuga_id = 1"; みたいに書くのを推奨している参考書とかは多いです。 が、個人的にはこちらのほうがよいと思います。 sql = " SELECT " + " * " + " FROM " + " …

XmlSerializerで作成したXMLを加工してからファイルに書きこみたい

と、思ったので、XmlSerializer.Serializeメソッドの引数にMemoryStreamを放り込んでStreamReaderで読めばOKじゃよね! とか言いつつサンプルコードを書いてみたのですが、最終的にできあがったファイルに元オブジェクトの情報が全然書き込まれてませんでし…

コンストラクタからコンストラクタを呼ぶ

簡単なことですが、忘れがちになるので。コンストラクタから、オーバーロードされた コンストラクタを呼ぶ場合thisキーワードを使用する。 public class ExClass { public ExClass() { //処理A } public ExClass(string paramOne) : this() { //処理B //この…

foreachと構造体

.NETの構造体は値型。これ基本。 しかし油断しているとつい下記のようなことをしてしまう。 //構造体 public struct ExampleStruct { public int Number { //get,set... } private int number; }//構造体利用側 ... private ExampleStruct[] exstrArray = ne…

条件付きコンパイル

プロジェクトのプロパティから条件付コンパイル定数を設定。 (既定でDEBUGとTRACEは入ってる) #if DEBUG //Code for debug #elif TRACE //Code for trace #else //Code for release #endif こんな感じでOK。ネストもできる。 メソッドまるごと条件付にした…

デリゲートとイベント

C#

なんだかんだでいざ使う時には忘れてたりするので、一般的な使い方。//eventargs public class MessageDisplayEventArgs : EventArgs { public MessageDisplayEventArgs(string _message) { this.message = _message; } public string Message { //get... } …