[C#][Tips] LINQ Where:抽出


///==================================
/// Where:条件を記載
/// 条件に応じて値を抽出
///==================================
public static void mFilter_01()
{
    //-------------------------------------------
    /* 余りが1(奇数):elem % 2 == 1 */
    //-------------------------------------------
    List ilSrc = new List { 3, 2, 9, 6 };
    var ilFiltered = (ilSrc.Where(elem => elem % 2 == 1)).ToList();
    ilFiltered.ForEach(c => Console.Write(c + ","));
    // {3, 9}  

    Console.WriteLine("");

    //-------------------------------------------
    /* 余りが1(奇数):elem % 2 == 1 */
    //-------------------------------------------
    var src = new[] { 3, 2, 9, 6 }; 
    var filtered = src.Where(elem => elem % 2 == 1); 
    foreach (var item in filtered)
    {
        Console.Write(item + ",");
    }
    // {3, 9}  
}

[C#][Tips] LINQ:Select

Select:対象を処理して、新しくインスタンスを生成。
(Whereは、対象を抽出)

///==================================
///Select : 写像(map)
/// 対象を処理して、新しくインスタンスを生成。
///==================================
public static void mMap_01()
{
    //-------------------------------------------
    /* 2倍:elem * 2 */
    //-------------------------------------------
    List ilSrc = new List { 3, 2, 9, 6 };
    var ilMapped = (ilSrc.Select(elem => elem * 2)).ToList();
    ilMapped.ForEach(c => Console.Write(c + ","));
    // {6, 4, 18, 12}  

    //-------------------------------------------
    /* 2倍:elem * 2 */
    //-------------------------------------------
    var src = new[] { 3, 2, 9, 6 };
    var mapped = src.Select(elem => elem * 2 );
    foreach (var item in mapped)
    {
        Console.Write(item + ",");
    }
    // {6, 4, 18, 12}  
}

[C#][Tips] プロセス(メモ帳制御:SendKey)

private void button6_Click(object sender, EventArgs e)
{
    //Processオブジェクトを作成する
    System.Diagnostics.Process p = new System.Diagnostics.Process();

    //起動するファイルを指定する
    p.StartInfo.FileName = "notepad.exe";

    //起動する
    p.Start();

    System.Threading.Thread.Sleep(1000);

    Microsoft.VisualBasic.Interaction.AppActivate("メモ帳");

    SendKeys.Send("キー入力{ENTER}テスト");
    SendKeys.Send("TAB{TAB}TAB");

    //ローカルコンピュータ上で実行されている"notepad"という名前の
    //すべてのプロセスを取得
    System.Diagnostics.Process[] ps =
        System.Diagnostics.Process.GetProcessesByName("notepad");

    //配列から1つずつ取り出す
    foreach (System.Diagnostics.Process pp in ps)
    {
        //IDとメインウィンドウのキャプションを出力する
        Console.WriteLine("{0}/{1}", pp.Id, pp.MainWindowTitle);
    }

}

[C#][Tips] List 宣言・インスタンス・初期値


//**********************************************
///
/// [LIST] 宣言・インスタンス・初期値
/// 
//**********************************************
public static void mList_Init()
{

    //==========================
    /* 宣言 */
    //==========================
     List<int> ilList;

    //==========================
    /* インスタンス */
    //==========================
    ilList = new List();
    ilList = new List(new int[3]);

    //==========================
    /* 初期値 */
    //==========================
    ilList = new List(new int[3]) { 1, 2, 3 };
    ilList = new List() { 1, 2, 3 };

    ilList.ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();

    ilList = new List(Enumerable.Repeat(9, 15));
    ilList.ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();

}

[C#][Tips] 配列 宣言・インスタンス・初期値

//**********************************************
/// [Array] 宣言・インスタンス・初期値
//**********************************************
public static void mArray_Init()
{

    //==========================
    /* 宣言 */
    //==========================
    int[] iaList;

    //==========================
    /* インスタンス */
    //==========================
    //iaList = new int[];  // err! 
    iaList = new int[5];

    //==========================
    /* 初期値 */
    //==========================
    iaList = new int[3] { 1, 2, 3 };
    iaList = new int[] { 1, 2, 3 };

    iaList.ToList().ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();

    iaList = Enumerable.Repeat(9, 15).ToArray();
    iaList.ToList().ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();

    string saList = new string('*',9);
    saList.ToList().ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();
}

[C#][Tips] 配列の要素をTrim

private void 配列の要素をTrim()
{
    string str = "a; b  ;     c; d";

    string[] sa = Array.ConvertAll(str.Split(';'), delegate(string s) { return s.Trim(); });

    sa.ToList().ForEach(c => Console.Write(c+','));

}

[C#][Tips] 配列同士を連結

//using System.Linq;

int[] ary1 = new int[] { 1, 2, 3 };
int[] ary2 = new int[] { 4, 5, 6 };

int[] mergedArray = ary1.Concat(ary2).ToArray();

[C#][Tips] オーバーロード/オーバーライド

オーバーロード/オーバーライド
【オーバーロード】
同じ名前のプロシージャを複数個作成する
 判別は、「引数の個数」「データの型」など

【オーバーライド】(Overrides)
親クラス(基本クラス)の機能名を変更せず、内容を再定義する

[C#][Tips]コンストラクタ/デストラクタ

コンストラクタ/デストラクタ
【コンストラクタ】
 オブジェクトが作成されたときに、自動的に実行されるプロシージャ
  New プロシージャ
 

【デストラクタ】
 オブジェクトが破棄される直前に自動的に実行されるプロシージャ
  Finalize プロシージャ