C# / 応用

【C#】ジェネリック(Generics) ~<T>型 / サンプルプログラム編 ~

■ 例1 Program.cs using System; namespace GenericDemo1 { class uArrayList<DATA> { DATA[] value; int dataNum = 0; public uArrayList(int max) { value = new DATA[max]; } public void add(DATA val) { try { if (dataNum < value.Length) { value[dataNum] </data>…

【C#】コンソールアプリ ~ コンソールアプリからフォームを表示する ~

■ 注意事項 * 参照の追加で「System.Windows.Forms」を追加する必要がある 手順 * [参照]-[参照の追加]-[アセンブリ]で、「System.Windows.Forms」をチェックし、 「OK」ボタン押下 ■ サンプル 例1:Hello World namespace SampleDemo { class Program { st…

【WMI】C# で WMI

WMI * Windows 上でいろんな情報を取得することが出来る機能 注意点 環境設定 * 参照の追加で、「System.Management」 を追加 WMI Library Win32_Process * プロセスを表す Win32_ComputerSystem * Windows環境のシステムオペレーションを表す 参考文献 http…

【C#】【SNMP】C#でSNMP ~導入編~

SNMP・サンプルプログラム [1] Trap受信 ⇒WMI SNMP Providerを入れれば、WMIからSNMPの値を取れるようになる。 http://challengeandresponse.blogspot.jp/2012/07/csnmp-trap.html http://msdn.microsoft.com/en-us/library/windows/desktop/aa393020.aspx […

【C#】レジストリの扱い方

レジストリへの読み込み 手順 [1] Registry.LocalMachine.OpenSubKey()で、レジストリキーのインスタンスを取得 [2] GetValue()で値を取得 サンプル // 操作するレジストリ・キーの名前 String registryKeyName = @"SOFTWARE\Microsoft\.NETFramework"; // …

【C#】共有キー暗号方式 ~暗号化編~

共有キー暗号方式による暗号化 特徴 * 単一の共有キーを使用してデータの暗号化と複合化を行う * 公開キー暗号方式と比較して高速 ⇒ 大量のデータストリームに対して暗号変換を実行する場合に適している 暗号化アルゴリズム * 以下の関連記事を参照のこと。 …

【.NET】メモリ管理 ~知識編~

.NET アプリケーションのメモリ種類 [1] スタック(ローカル変数を保持するための空間。容量が比較的小さい。) [2] ヒープ(参照型のデータのインスタンスを保持するための空間。容量が非常に大きい。) [2-1] アンマネージ ヒープ [2-2] マネージ ヒープ C…

【C#】IPアドレス に関する処理

■ IPアドレスを取得する サンプル sing System; using System.Net; using System.Windows.Forms; using System.Linq; using System.Net.Sockets; namespace SampleForm { public partial class Form1 : Form { public Form1() { InitializeComponent(); } pr…

【C#】ガベージ・コレクション(Garbage Collection、GC)

概要 http://mzs184.blogspot.jp/2008/01/gc.html より抜粋 * ガベージコレクションは、あくまでも new したオブジェクトを解放してくれるもの => ファイルリソースやネットワーク接続リソースについては、Disposeなどで、 明示的に解放する処理を記述する必…

【C#】IntPtr構造体

■ IntPtr構造体 * ポインタを利用することなどに利用 ■ IntPtr のあれこれ IntPtr型に変換 構文 long 元データ; IntPtr 新データ = new IntPtr(元データ); ポインタを取得する 構文 var pointer = 【クラス】.ToPointer(); サンプル Bitmap bitmap = new Bit…

【C#】画像かどうかを判定する ~ ImageCodecInfo / Bitmap を使って ~

■ サンプル public bool IsImage(string imagePath) { ImageCodecInfo[] decoders = ImageCodecInfo.GetImageDecoders(); Bitmap bitmap; try { bitmap = new Bitmap(imagePath); } catch (Exception) { return false; } bool isImage = false; foreach (Ima…

【C#】Assembly ( アセンブリ )

Assembly ( アセンブリ )について * [Propeties]-[AssemblyInfo.cs]に、バージョン名などのシステム情報が格納されている Assembly情報の編集 * [Propeties]をクリックし、[アプリケーション]-[アセンブリ情報]ボタンをクリックし、編集できる Assembly情報…

【C#】ユーザ情報取得 ~ コンピュータ名 etc ~

■ コンピュータ名 / マシン名 構文 Environment.MachineName ■ ユーザ名 構文 Environment.UserName; サンプル http://www.atmarkit.co.jp/fdotnet/dotnettips/642displayname/displayname.html を参照のこと private string GetFullName() { // ドメイン名 …

【C#】アプリの二重起動を禁止する

方法 2つの方法がある [1] Process.GetProcessesByName()を使用する [2] Mutexを使用する サンプル [1] Process.GetProcessesByName() [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(…

【C#】拡張メソッド

■ 拡張メソッドの作成方法 * 静的クラスの 第一引数に、 this キーワードを修飾子として付けた static メソッドを書く 抜粋 public static string ToStringInJapanese(this Sex sex) ■ サンプル 拡張メソッド(本体) public enum Sex { Male, Female, } pub…

【C#】【Form】マルチリンガルなシステムを作成する

英語・日本語用のシステムを作成する 前準備 * デフォルト(フォームのプロパティ「Language : (既定)」)で英語用にシステムを作成する。 手順 [1] フォームのプロパティ「AutoScaleMode : None」に変更する (英語フォントと日本語フォントの差によって、コ…

【C#】Webページにアクセスする ~ WebClient ~

■ WebClient * Webページにアクセスする ■ サンプル * 下記の例の場合、もっと綺麗に書けるが、とりあえずサンプルとして。。。 private void button1_Click(object sender, EventArgs e) { WebClient wc = new WebClient(); using (Stream st = wc.OpenRead…

【C#】ジェネリック(Generics) ~<T>型 / 入門編 ~

■ ジェネリック * 型だけ違って、処理の内容が同じものを作る時に使う。 http://ufcpp.net/study/csharp/sp2_generics.html 利点 クラスやメソッドを汎用的に使えるようにする 構文 クラス定義 【アクセスレベル】class 【クラス名】<型引数> { // クラス定…

【C#】オペレータ(Operator)

■ オペレータ(Operator) * 演算子のオーバーロード * 独自作成したクラスなどに使えそう 構文 public static 戻り値の型 operator演算子 (引数) 例 public static bool operator ==(DataList source1, DataList source2) { return ... // boolの戻り値 } p…

【C#】処理時間計測

■ 処理時間計測 * Stopwatchクラスを使用する ■ サンプル Stopwatch sw = new Stopwatch(); // 測定開始 sw.Start(); // 何らかの処理 // 測定終了 sw.Stop(); // TimeSpan構造体で書式付き表示(出力例:00:00:00.9984668) TimeSpan ts = sw.Elapsed; // 測…

【C#】プリンタ・印刷に関する処理 ~PrintDocument / ReportDocument の利用 ~

■ プリンタ * PrintDocument を利用する 【1】 印刷に関するサンプル デザイン部 * printDocument1 x 1 * printDialog1 x 1 + Document : printDocument1 + UseEXDialog : True * printPreviewDialog1 x 1 + Document : printPreviewDialog1 * pageSetup…