C#

【C#】Process に関するあれこれ

C#

■ はじめに https://blogs.yahoo.co.jp/dk521123/23819581.html で、Process について、とりあげたが、今回は深堀りする。 ■ 終了コードを得るには * Process.ExitCode から取得する API仕様 Process.ExitCode https://docs.microsoft.com/ja-jp/dotnet/api/…

【C#】Byte / Byte[] (Byteの配列)

C#

■ エンディアンの対応 * 以下の公式サイトに記載されてた https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/how-to-convert-a-byte-array-to-an-int * 「BitConverter.IsLittleEndian」と「Array.Reverse()」で対応 例 if (BitConve…

【C#】 C# で OpenCV を使用する ~ 画像の位置合わせを考える ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/05/07/232536 の続き。 今回は、画像の位置合わせを考える。 ■ 今回使用するOpenCVのAPI * 以下のAPIが使えそう 1)GetPerspectiveTransform 2)WarpPerspective 1)GetPerspectiveTransform * 変…

【C#】 C# で OpenCV を使用する ~ 環境構築編 ~

■ はじめに OpenCVをC#で使用できるようにする ■ 環境構築 * NuGet でインストールするだけ(簡単!) 構築環境 * OS : Windows10 * VS : Microsoft Visual Studio Community 2017 (Version 15.9.1) * OpenCV : OpenCvSharp3-AnyCPU(Version : 4.0.0.2018112…

【C#】Delegate / Event ~ 非同期デリゲート・コールバック関数を実装する ~

C#

■ はじめに https://dk521123.hatenablog.com/entry/2010/12/12/164101 https://dk521123.hatenablog.com/entry/2010/12/25/221009 https://dk521123.hatenablog.com/entry/2010/10/22/101350 の続き。 今回は、処理が終わったら、 コールバック関数を呼び出…

【C#】列挙型・Enum ~ フラグ・アトリビュート ~

C#

■ フラグ・アトリビュート(Flags Attribute) * Flags属性(FlagsAttributeクラス)を付与することにより、Enum型がビットフラグとして使えるようになる ■ 定義 * Flags属性([Flags])を付与する サンプル [Flags] public enum SampleEnum { None = 0, Sampl…

【C#】Delegate / Event ~ Func デリゲート ~

C#

■ はじめに https://dk521123.hatenablog.com/entry/2010/12/12/164101 https://dk521123.hatenablog.com/entry/2010/12/25/221009 https://dk521123.hatenablog.com/entry/2010/10/22/101350 の続き。 ■ Func デリゲート Func<T, TResult>の意味 * T型の引数を1つ、戻り</t,>…

【C#】Delegate / Event ~ 非同期デリゲート・バックグラウンド処理を行う ~

C#

■ はじめに https://dk521123.hatenablog.com/entry/2010/12/12/164101 https://dk521123.hatenablog.com/entry/2010/12/25/221009 https://dk521123.hatenablog.com/entry/2010/10/22/101350 の続き。 ■ 基本的な流れ 1)非同期で呼び出すメソッドと同じシ…

【C#】列挙型・Enum ~ Enumの文字列化 ~

C#

■ Enumの文字列化 https://blogs.yahoo.co.jp/dk521123/29483903.html で「アトリビュート」と「拡張メソッド」(それぞれの技術説明は下記「関連記事」参照)で作成したが 1つのEnumに対して、1つの文字列化メソッドを作成しなくてはならない そこで、使い…

【C#】【コレクション】コレクション ~基本編~

C#

コレクション * 配列に似ているが、追加・削除・検索などの操作が容易に可能 使用上の注意 * System.Collections空間のコレクション(ArrayListなど)は古いので使用せず、 System.Collections.Generic空間のコレクションを使用すること * 要素が増加し追加…

【C#】継承 [2] (インターフェース・interface)

C#

インターフェイスについて * インターフェイスとは、「外部との窓口」という意味。 意義・利点 * インターフェイスを実装することにより、外部クラスからのアクセスを直接行わせたくない場合、 インターフェイスを介し、アクセスさせる。 →クラス内部を隠蔽…

【C#】sealed キーワード ~ 継承禁止 / パフォーマンス向上 ~

C#

■ sealed キーワード * 「sealed(シールド)」は「封印された」って意味 * sealedクラスは継承不可 => Java でいう final => 継承しようとするとコンパイルエラー => 拡張を他者にしてほしくない場合は sealed キーワードを付けるべき http://msdn.microsof…

【C#】列挙型・Enum ~ 数値からEnumに変換 ~

C#

■ 数値からEnumに変換 http://snoopywzr.blogspot.jp/2009/10/c-enum.html http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_016/cs2_016_04.html を参考に「Enum.Parse()」「Enum.IsDefined()」を使用して作成する 以下の関連記事の「属性(アトリビ…

【C#】属性(アトリビュート) ~カスタム属性~

C#

■ カスタム属性:属性の自作 作成ポイント * System.Attirbuteクラスを継承すること * 属性に引数を付けるには、引数を持ったコンストラクタを用意すること ■ サンプル http://d.hatena.ne.jp/lord_hollow/20110121 http://igeta.cocolog-nifty.com/blog/200…

【C#】クリップボード ~コピー&ペーストを実装する~

C#

■ 選択されている文字列の取得 var text = this.textBox1.SelectedText; http://dobon.net/vb/dotnet/control/tbselectedtext.html ■ クリップボードに文字列をコピーする var text = this.textBox1.SelectedText; Clipboard.SetDataObject(text, true); htt…

【C#】可変長引数 ~ params ~

C#

■ C# の可変長引数 * 「param」キーワードが必要 => 可変個の引数を取るメソッドを定義できる ■ 構文 public void Xxx(param int[] values) { // ... ■ サンプル private void button2_Click(object sender, EventArgs e) { string a = "Mike", b = "Tom", c…

【C#】コーディング規約

C#

空白の一貫性を保つ 以下のケースで空白を挿入する。 1. if for などの制御フローの後 2. for文の ; の後 3. メソッドの引数の , の後 4. 二項演算子の前後 5. クラス定義時の : の前後 6. { の前にコードを書く場合 7. { の後にコードを書く場合 1文が長い…

【C#】イベントログ出力

C#

■ サンプル EventLogger.cs using System.Diagnostics; namespace SampleForm { public static class EventLogger { private const string SourceName = "HelloWorld"; // イベントID ★以下「使用上の注意」も参照★ private const int DefaultEventId = 1100…

【C#】数値の扱い

C#

数字の扱い * NET Framework 2.0以降ではDecimal型が使えるが、.NET Framework 1.xでは常にDouble型を使う必要がある。 * Double型は丸めが起こってしまうので、注意。 四捨五入 関数化 // value:対象値、point:小数点桁数 private Decimal GetRoundOffValue…

【C#】正規表現

C#

■ Regex.IsMatch() private void button1_Click(object sender, EventArgs e) { string tel = "090-XXXX-YYYY"; bool isMatch = Regex.IsMatch(tel, "090"); if (isMatch) { this.label1.Text = "Found it!"; } } ■ Regex.Match() private void button2_Clic…

【C#】Process ~ 別アプリを起動するには ~

C#

■ ほかのアプリケーションを起動するには... * Process.Start() を使用する 参考資料 http://www.atmarkit.co.jp/fdotnet/dotnettips/149procstart/procstart.html http://www.atmarkit.co.jp/fdotnet/dotnettips/211startmail/startmail.html http://uchuka…

【C#】DateTime / TimeSpan ~ 日時 / 時間の扱いについて ~

C#

■ DateTime 日時 => 日付にする Date で日時を「00:00:00.000」にしてくれる(便利) // 2011/04/13 0:00:00 this.label1.Text = DateTime.Now.Date.ToString(); ■ TimeSpan * 時間の差の扱い 実装例 サンプルのように記述する方法もあるし、以下のように1行で…

【C#】Delegate / Event ~ Action デリゲート ~

C#

■ はじめに https://dk521123.hatenablog.com/entry/2010/12/12/164101 https://dk521123.hatenablog.com/entry/2010/12/25/221009 https://dk521123.hatenablog.com/entry/2010/10/22/101350 の続き。 ■ Action デリゲート Actinの意味 ・T型の引数を1つ、…

【C#】Tuple(タプル)

C#

■ Tuple(タプル) * tupleとは「組」。コンピューターの分野では、「1件分のデータ」 * 1つにまとめたい複数オブジェクトをパラメータとして、TupleクラスのCreate()を呼び出す * Tupleオブジェクト内の項目は、Item1、Item2、・・・といったプロパティによ…

【C#】継承 [1] (abstract / virtual / override )

C#

abstract 抽象クラスとインターフェイスとの違い (1) 実装内容のないメソッドだけでなく、内容を含むメソッド(下のサンプルの場合、GetName())を記述できる (2) 抽象クラスは、二つ以上継承できない。つまり、多重継承できない。(インターフェイスは二つ以…

【C#】属性(アトリビュート) ~定義済み属性~

C#

属性(アトリビュート)とは * クラスやメンバーに色々な情報を付加することができる 属性の種類 [1] 定義済み属性 [2] カスタム属性 [1] 定義済み属性 * 以下が参考になる http://youryella.wankuma.com/Library/Document/ControlAttribute.aspx Obsolete *…

【C#】Delegate / Event ~ イベント・画面と処理の分離 ~

C#

■ はじめに https://dk521123.hatenablog.com/entry/2010/12/12/164101 https://dk521123.hatenablog.com/entry/2010/12/25/221009 https://dk521123.hatenablog.com/entry/2010/10/22/101350 の続き。 今回は、画面(ビュー)のイベントを、別のクラス(プレゼ…

【C#】列挙型・Enum ~ 基本編 ~

C#

■ 基本 * 基本はC言語のEnumと変わらない 構文 enum sex { male, female } サンプル enum sex { male, female } private void button2_Click(object sender, EventArgs e) { this.label1.Text = string.Empty; foreach (int val in Enum.GetValues(typeof(se…

【C#】List (リスト)

C#

■ Listについて、あれこれ ArrayListについて * .NET 2.0以前は、ArrayListしかなかった。 * ArrayListは、object型のデータが入るので何でも入れられるが、取り出すときにキャストする必要がある * 間違ってキャストすると例外で落ちるが、コンパイル時には…

【C#】引数に付加するキーワード ~ ref / out / params ~

C#

メソッド呼出時に引数を渡す方法 【1】 値渡し(call by value) 【2】 参照渡し(ref) 【3】 特殊な参照渡し(out) 【4】 その他 ■ ref * 参照渡し(call by reference): C言語でいうアドレス渡し * 参照渡しは、メソッドの引数に ref キーワードを付け…