PHPからC#に移行してきました。
c#でDictionalyを使ってPHPでいう下記のような連想配列をつくって1つの配列で複数の言語データを管理しようとしています。
しかしC#の記事で連想配列の多次元データを扱うことは絶対にないという記事を見つけ混乱しています。
C#ではどのように実装するのが好ましいのでしょうか。
見つけた記事URLです
https://anond.hatelabo.jp/20170524202057
PHPで書くと下記の処理をC#で実装したいです
PHP
1$data_arr['ja']['fruit'] = array( 2 'apple' => 'りんご', 3 'banana' => 'ばなな', 4 'grape' => 'ぶどう', 5); 6 7$data_arr['en']['fruit'] = array( 8 'apple' => 'apple', 9 'banana' => 'banana', 10 'grape' => 'grape', 11); 12 13//日本語で使用 14$lang = 'ja' //実際は使用言語を動的に取得 15$btn1 = $data_arr[$lang]['fruit']['apple']; 16 17?>
追記1
頂いた意見を参考に下記の形で実装しようと試みましたが、変なところで躓いてしましました。
下記クラスをnewしたときに各言語テキストをセットし、GetList()で取得という処理を行いのですが、switchのreturn data箇所でコンテキストが存在しませんというエラーがでてしまいます。
また、取得する側のコードのvar textdata2 = new TextData2("fruit");の箇所では下記画像のようなエラーがでてしまいますが原因が分からない状況です。
public class Fruit { public string lang { get; set; } public string apple { get; set; } public string banana { get; set; } public string grape { get; set; } } public class TextData2 { public List<Fruit> fruit_list; public void Main(string page) { switch (page) { case "fruit": fruit_list = new List<Fruit>() { new Fruit(){lang = "ja", apple = "りんご", banana = "ばなな", grape="ぶどう"}, new Fruit(){lang = "en", apple = "apple", banana = "banana", grape="grape"}, }; break; } } public dynamic GetList(string lang, string page) { switch (page) { case "fruit": var data = (from l in fruit_list where l.lang == lang select l).FirstOrDefault(); break; } return data; } }
下記は取得側のコード
//取得側 var textdata2 = new TextData2("fruit"); var fruit_list = textdata2.GetList(lang, "fruit");
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/14 02:36
2018/05/14 04:35
2018/05/14 05:02
2018/05/14 05:49