概要
PHPでは以下のような型の異なる多次元配列を作成することが可能です。
このような多次元配列をC#でも作成する方法について解説します。
$list = [
["TV", 25]
["Table", 80],
];
前提環境
- Windows 10
- Visual Studio Professional 2019
- .NET Framework 4.2
- C#
コードのポイント
複数の型をもつデータを持つにはいろいろな方法があります。
Class(クラス)やStruct(構造体)がまず思いつきますが、コード上のその場限りで使うにはふさわしくありません。
そこで今回はTuple(タプル)を使うことにします。このTupleのデータに対してListを使って配列化していきます
サンプルコード
public function createTable() {
// Tupleを使って、文字列や数字、メソッド(関数)などの型を持つデータ構造を作ります。
// そのTupleの型をListのジェネクリックに指定して多次元配列とします。
// 戻り値無しのメソッドの型はAction。戻り値がある場合はFuncを使います。
// Actionの後ろの<int>は引数のジェネリックで、第一引数のintを示します。
List<Tuple<string, int, Action<int>, Action>> list = new List<Tuple<string, int, Action<int>, Action>>();
// Tupleをnewする場合は、後ろの丸括弧内に値を記載します。
list.Add(new Tuple<string, int, Action<int>, Action>("TV", 23, ShowTVSize, ShowTVPrice));
list.Add(new Tuple<string, int, Action<int>, Action>("Table", 90, ShowTableSize, ShowTablePrice));
// foreachでTupleのListデータを取得する場合はこのような記載になります。
foreach (Tuple<string, int, Action<int>, Action> tuple in list)
{
// Tupleの値はItem1, Item2となりますが、可読性が低いので変数を用意します。
string name = tuple.Item1;
int size = tuple.Item2;
Action<IConfig> showSizeMethod = tuple.Item3;
Action showPriceMethod = tuple.Item4;
/*
* 途中省略
*/
// TVのサイズを表示するメソッド
public void ShowTVSize(int size)
{
System.Console.WriteLine("TV Size is {0}", size * 2.54);
}
// 食卓のサイズを取得するメソッド
public void ShowTVSize(int size)
{
System.Console.WriteLine("Table Size is {0}", size);
}
// TVの金額を取得するメソッド
public void ShowTVPrice()
{
System.Console.WriteLine("TV Price is 25,000");
}
// 食卓の金額を取得するメソッド
public void ShowTVPrice()
{
System.Console.WriteLine("Table Price is 10,000");
}