我经常需要一个键到多个vaules字典,但在C#中,大多数都是像Dictionary和Hashtable这样的两个维度.
我想要这样的东西:
var d = new Dictionary<key-dt,value1-dt,value2-dt,value3-dt,value4-dt>();
Run Code Online (Sandbox Code Playgroud)
dt inside <>表示数据类型.有人有这方面的想法吗?
Ani*_*nge 20
字典是键值对,其中值取决于键.钥匙都是独一无二的.
现在,如果您想要Dictionary1个键类型和多个值类型,您有几个选项:
首先是使用一个 Tuple
var dict = new Dictionary<KeyType, Tuple<string, string, bool, int>>()
另一种是使用(使用C#4.0及以上版本):
var dict = new Dictionary<KeyType, dynamic>()
所述System.Dynamic.ExpandoObject可具有任何类型的值.
using System;
using System.Linq;
using System.Collections.Generic;
public class Test {
public static void Main(string[] args) {
dynamic d1 = new System.Dynamic.ExpandoObject();
var dict = new Dictionary<int, dynamic>();
dict[1] = d1;
dict[1].FooBar = "Aniket";
Console.WriteLine(dict[1].FooBar);
dict[1].FooBar = new {s1="Hello", s2="World", s3=10};
Console.WriteLine(dict[1].FooBar.s1);
Console.WriteLine(dict[1].FooBar.s3);
}
}
Run Code Online (Sandbox Code Playgroud)
用类描述适当的键字段和适当的值字段。并使用这些类型的字典。
var dictionary = new Dictionary<TheKeyType, TheValuesType>();
Run Code Online (Sandbox Code Playgroud)
注意:如果您有多个值作为键,您将定义一个类来封装这些值并提供 GetHashCode 和 Equals 的适当覆盖,以便字典可以识别它们的相等性。
如果不这样做,您可以使用元组,但您想限制这种模式,因为元组是非自描述的。
var dictionary = new Dictionary<Tuple<Key1Type, Key2Type, Etc>, Tuple<Value1Type, Value2Type, Etc>>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53716 次 |
| 最近记录: |