解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

C# の Class の操作性



こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。


この記事の目次



背景・目的


かなり Class を忘れていました。
『値渡し』か『参照渡し』かも一瞬考えました。

Class の場合、構造体と違い、メンバの操作性は高いはずなので、確認しました。



動作環境


Windows 7
Visual Studio 2017



プログラム

ソースコード


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace How_to_use_Class_List
{
    class Program
    {
        static void Main(string[] args)
        {
            // クラスインスタンスの作成
            sample s = new sample();
 
            // インスタンスに値の代入
            s.x = 10;
            s.y = 20;
            s.list = new List();
            s.list.Add(50);
            s.list.Add(s.y);
            s.list.Add(s.x);
            s.list2D = new List>();
            s.list2D.Add(new List());
            s.list2D[s.list2D.Count - 1].Add(60);
            s.list2D[s.list2D.Count - 1].Add(s.y);
            s.list2D[s.list2D.Count - 1].Add(s.x);
            s.list2D.Add(new List());
            s.list2D[s.list2D.Count - 1].Add(40);
            s.list2D[s.list2D.Count - 1].Add(s.y);
            s.list2D[s.list2D.Count - 1].Add(s.x);
            s.list2D.Add(new List());
            s.list2D[s.list2D.Count - 1].Add(50);
            s.list2D[s.list2D.Count - 1].Add(s.y);
            s.list2D[s.list2D.Count - 1].Add(s.x);
            s.list2D.Add(new List());
            s.list2D[s.list2D.Count - 1].Add(30);
            s.list2D[s.list2D.Count - 1].Add(s.y);
            s.list2D[s.list2D.Count - 1].Add(s.x);
            s.list2D.Add(new List());
            s.list2D[s.list2D.Count - 1].Add(90);
            s.list2D[s.list2D.Count - 1].Add(s.y);
            s.list2D[s.list2D.Count - 1].Add(s.x);
            s.list2D.Add(new List());
            s.list2D[s.list2D.Count - 1].Add(10);
            s.list2D[s.list2D.Count - 1].Add(s.y);
            s.list2D[s.list2D.Count - 1].Add(s.x);
 
            // List のソート
            s.list.Sort();
            s.list2D.Sort((a, b) => a[0] - b[0]);
 
            // 表示
            Console.WriteLine("s.x = " + s.x);
            Console.WriteLine("s.y = " + s.y);
            for (int i = 0; i < s.list.Count; i++)
            {
                Console.WriteLine("s.list[" + i + "] = " + s.list[i]);
            }
            for (int i = 0; i < s.list2D.Count; i++)
            {
                for(int j = 0; j < s.list2D[i].Count; j++)
                {
                    if (j == 0)
                    {
                        Console.Write("s.list[" + i + "][" + j + "] = " + s.list2D[i][j]);
                    }
                    else
                    {
                        Console.Write(" , s.list[" + i + "][" + j + "] = " + s.list2D[i][j]);
                    }
                }
                Console.WriteLine("");
            }
 
            // 終了待機
            Console.WriteLine("");
            Console.WriteLine("何かキーを押して下さい。");
            Console.ReadKey();
        }
    }
 
    // 自作クラス
    class sample
    {
        public int x;
        public int y;
        public List list;
        public List> list2D;
    }
}



結果


図1 結果



コメント

メンバに 2 次元的な List がある Class を作成し、値を記憶させた簡単なサンプルです。

この確認作業はブログ書くのも含めて 10 分くらいでやってるので、微妙に確認したいことが抜けたりしています。

Class をList に入れた時の操作性なども確認すれば良かったです。



以上