该脚本不支持Scripting.Dictionary.this [ref object]'

时间:2012-10-18 07:06:23

标签: c#

我正在将VB6项目转换为C#.Net但我在使用Scripting.Dictionary时遇到了问题。错误消息是“Scripting.Dictionary.this [ref object]'不受语言”支持。我想获取特定键的项目。

key=astr[n];
Scripting.Dictionary m_dicValueOf;
strXPath = m_dicValueOf[astr[n]];

2 个答案:

答案 0 :(得分:1)

您无法在C#中的索引器中使用refout参数,因此您无法使用具有refout参数的索引器。

(语言限制背后的原因当然是改变发送给索引器的密钥是没有意义的。)

使用框架中的Dictionary<K,V>类代替。例如:

Dictionary<string, string> m_dicValueOf;

strXPath = m_dicValueOf[key];

答案 1 :(得分:1)

即使表面上的dictionary[ref key]看起来像C#索引器,它也不兼容。

相反,要在字典中设置值,您需要使用基础set方法:

dictionary.set_Item(ref key, value);

请注意,key的类型必须为Object

要获取密钥的值,您需要使用基础get方法:

var value = dictionary.get_Item(ref key);

同样,key必须是Object