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;
}
}
コメント
メンバに 2 次元的な List がある Class を作成し、値を記憶させた簡単なサンプルです。
この確認作業はブログ書くのも含めて 10 分くらいでやってるので、微妙に確認したいことが抜けたりしています。
Class をList に入れた時の操作性なども確認すれば良かったです。
以上