Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行时获取非泛型IDictionary的键和值类型_C#_Types_Dictionary - Fatal编程技术网

C# 在运行时获取非泛型IDictionary的键和值类型

C# 在运行时获取非泛型IDictionary的键和值类型,c#,types,dictionary,C#,Types,Dictionary,我想知道如何在运行时获得非泛型IDictionary的键和值类型 对于泛型IDictionary,我们可以使用反射来获取泛型参数,这已经得到了回答 但对于非泛型IDictionary,例如HybridDictionary,如何获取键和值类型 编辑:我可能无法正确描述我的问题。 对于非泛型IDictionary,如果我有HyBridDictionary,它声明为 HyBridDictionary dict = new HyBridDictionary(); dict.Add("foo" , 1)

我想知道如何在运行时获得非泛型IDictionary的键和值类型

对于泛型IDictionary,我们可以使用反射来获取泛型参数,这已经得到了回答

但对于非泛型IDictionary,例如HybridDictionary,如何获取键和值类型

编辑:我可能无法正确描述我的问题。 对于非泛型IDictionary,如果我有HyBridDictionary,它声明为

HyBridDictionary dict = new HyBridDictionary();

dict.Add("foo" , 1);
dict.Add("bar", 2);
如何确定键的类型是字符串,值的类型是int?

从msdn页面:

//使用foreach语句隐藏枚举数的复杂性。
//注意:foreach语句是枚举集合内容的首选方法。
公共静态无效打印键和值1(IDictionary mycl){
Console.WriteLine(“键值”);
foreach(mycl中的词典入口)
Console.WriteLine(“{0,-25}{1}”,de.Key,de.Value);
Console.WriteLine();
}
//使用枚举数。
//注意:foreach语句是枚举集合内容的首选方法。
公共静态无效打印键和值2(IDictionary mycl){
IDictionaryEnumerator myEnumerator=mycl.GetEnumerator();
Console.WriteLine(“键值”);
while(myEnumerator.MoveNext())
WriteLine(“{0,-25}{1}”,myEnumerator.Key,myEnumerator.Value);
Console.WriteLine();
}
//使用键、值、计数和项属性。
公共静态无效打印键和值3(Hybridl){
String[]myKeys=新字符串[mycl.Count];
myCol.Keys.CopyTo(myKeys,0);
Console.WriteLine(“索引键值”);
for(int i=0;i
从msdn页面:

//使用foreach语句隐藏枚举数的复杂性。
//注意:foreach语句是枚举集合内容的首选方法。
公共静态无效打印键和值1(IDictionary mycl){
Console.WriteLine(“键值”);
foreach(mycl中的词典入口)
Console.WriteLine(“{0,-25}{1}”,de.Key,de.Value);
Console.WriteLine();
}
//使用枚举数。
//注意:foreach语句是枚举集合内容的首选方法。
公共静态无效打印键和值2(IDictionary mycl){
IDictionaryEnumerator myEnumerator=mycl.GetEnumerator();
Console.WriteLine(“键值”);
while(myEnumerator.MoveNext())
WriteLine(“{0,-25}{1}”,myEnumerator.Key,myEnumerator.Value);
Console.WriteLine();
}
//使用键、值、计数和项属性。
公共静态无效打印键和值3(Hybridl){
String[]myKeys=新字符串[mycl.Count];
myCol.Keys.CopyTo(myKeys,0);
Console.WriteLine(“索引键值”);
for(int i=0;i
试试这个:

foreach (DictionaryEntry de in GetTheDictionary())
{
    Console.WriteLine("Key type" + de.Key.GetType());
    Console.WriteLine("Value type" + de.Value.GetType());
}
试试这个:

foreach (DictionaryEntry de in GetTheDictionary())
{
    Console.WriteLine("Key type" + de.Key.GetType());
    Console.WriteLine("Value type" + de.Value.GetType());
}

非泛型词典不一定具有与泛型词典相同的键或值类型。它们可以将任何类型作为键,将任何类型作为值

考虑这一点:

var dict = new System.Collections.Specialized.HybridDictionary();

dict.Add(1, "thing");
dict.Add("thing", 3);
它有多种类型的键和多种类型的值。那么,你认为钥匙是什么类型的呢


您可以找出每个键和单个值的类型,但不能保证它们都是相同的类型。

非泛型词典不一定具有与泛型词典相同的键或值类型。它们可以将任何类型作为键,将任何类型作为值

考虑这一点:

var dict = new System.Collections.Specialized.HybridDictionary();

dict.Add(1, "thing");
dict.Add("thing", 3);
它有多种类型的键和多种类型的值。那么,你认为钥匙是什么类型的呢

您可以找出每个键和单个值的类型,但不能保证它们都是相同的类型。

他在询问类型。你正在显示键和值。他在询问类型。您正在显示键和值。