c# - 多值词典

标签 c#

我如何在 C# 中创建一个多值字典?

例如Dictionary<T,T,T>其中第一个 T 是键,另外两个是值。

所以这是可能的:Dictionary<int,object,double>

谢谢

最佳答案

如果您尝试将值组合在一起,这可能是创建简单结构或类并将其用作字典中的值的好机会。

public struct MyValue
{
    public object Value1;
    public double Value2;
}

然后你就可以拥有你的字典了

var dict = new Dictionary<int, MyValue>();

您甚至可以更进一步,实现您自己的字典类来处理您需要的任何特殊操作。例如,如果你想要一个接受 int、object 和 double 的 Add 方法

public class MyDictionary : Dictionary<int, MyValue>
{
    public void Add(int key, object value1, double value2)
    {
        MyValue val;
        val.Value1 = value1;
        val.Value2 = value2;
        this.Add(key, val);
    }
}

然后您可以像这样简单地实例化并添加到字典中,您不必担心创建“MyValue”结构:

var dict = new MyDictionary();
dict.Add(1, new Object(), 2.22);

关于c# - 多值词典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569903/

相关文章:

c# - SpreadsheetML 到 Open XML (XLSX) 的 Excel 转换

c# - OnClient Click 使用 Freetextbox 的 javascript

c# - 为什么 IS NULL 有效但 SQL Parameter with DBNull.Value for DateTime 不起作用?

c# - 如何填充 C# comboBox 中的空白区域作为对用户的提示?

c# - ConfigureAwait(false) 不会使继续代码在另一个线程中运行

c# - 有没有办法保护遵循 MethodName_Condition_ExpectedBehaviour 模式的单元测试名称免受重构?

c# - 我可以向现有的分部类添加错误处理吗?

c# - 如何在 C# 中手动使用 PKCS5 (RFC 1423) 填充进行 AES 解密?

c# - 使用XMLReader访问重名的子节点

c# - 如何在动态 LINQ 中执行 "let"?