[API]DictionaryではなくHashtableを使用する理由 | Unity Forum | Tech Stadium Forum

[API]Dictionaryではなく...
 
通知
すべてクリア

[API]DictionaryではなくHashtableを使用する理由  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
18/03/2021 9:33 am  
techsta_unity_api\UnityProject\DataTest03_File
ManagerMain.csでローカルに保存するjsonデータを作成する際、
var sampleJson = new List<Hashtable>()
{
new Hashtable()
{
{"age", 12},
{"name", "jack"},
{"hobby", "run"}
},
new Hashtable()
{
{"age", 23},
{"name", "mary"},
{"hobby", "walk"}
},
};
という書き方をしておりますが、
なぜ、DictionaryではなくHashtableを使用するのでしょうか?
Hashtableはキーと値をobject型で指定するものらしいですが、
Dictionaryよりもこちらを使うメリットや、
使い分けをご教授いただきたいです。
また、
var sampleJson = new List<Dictionary>()
{
new Dictionary()
{
{"age", 12},
{"name", "jack"},
{"hobby", "run"}
},
new Dictionary()
{
{"age", 23},
{"name", "mary"},
{"hobby", "walk"}
},
};
上記のような書き方はなぜだめなのでしょうか?

引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1318
18/03/2021 9:35 am  
Dictionaryはジェネリクス型で値を指定するので、型の安全が約束されます。
その代わり、宣言時に宣言した型しか代入できないので
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("test1" , "hoge");
dic.Add("test2", 12);
と実装してしまうと、12はstring型ではなくint型なのでエラーが発生してしまいます。
 
その点Hashtableの場合はObjectで値を指定するので、型の安全は守られず、様々な型を値に指定しても問題無い形となっています。

返信引用
共有:
タイトルとURLをコピーしました