用匿名对象初始化字典

Kon*_*ten 3 c# dictionary initialization anonymous-types

我正在尝试执行以下操作。

private static Dictionary<int, object> MAPS = new Dictionary<int, object>
{
  {1, new {1, 2, 3}}
};
Run Code Online (Sandbox Code Playgroud)

基于MSDN,它没有按我期望的那样工作,所以我可以肯定的是,问题在于我正在使用匿名对象。假设我不想为我的东西创建一个新类型,并且仍然想将所有映射保留在同一词典中,该怎么办?

我已经看到了这个答案,但是现在它有点过时了,所以我希望框架中有一些新的东西。

juh*_*arr 5

如果要将ints 数组作为值,请尝试此操作。

private static Dictionary<int, object> MAPS = new Dictionary<int, object>
{
  {1, new[] {1, 2, 3}}
};
Run Code Online (Sandbox Code Playgroud)

或者如果您想要匿名班级

private static Dictionary<int, object> MAPS = new Dictionary<int, object>
{
  {1, new { a = 1, b = 2, c = 3}}
};
Run Code Online (Sandbox Code Playgroud)

或者更好的是不要使用object。如果需要特定的值,请使用int[]List<int>来作为int类或结构的集合,或者声明一个类或结构。Tuple<int,int,int>如果int每个值只需要3 s,甚至可以使用。但是,总的来说,您应该尽量避免与之间进行强制转换object