编程语言
首页 > 编程语言> > javascript-如何枚举Jint中的Dictionary <>

javascript-如何枚举Jint中的Dictionary <>

作者:互联网

我有一本.NET通用词典.我想传递给我在Jint中运行的JavaScript函数.

Jint不会将.NET字典视为JavaScript对象,而将JavaScript对象视为字典.您可以访问对象的.NET属性和方法,但不能访问扩展方法.

因此,尽管我可以得到字典键的数量,但无法枚举它或对其调用ToArray().

我可以使用dict [key]从字典中读取值,但是在这种情况下,我事先不知道键.

如何枚举键或获取.NET通用词典中的所有条目?

我愿意对字典做一些事情,或者在将其传递给我之前将其转换,或者弄清楚如何在JavaScript中进行处理.我希望不必分别传递键的数组.这是在另一个数据结构内部,对每个字典执行此操作会使它更加复杂,但是如果找不到其他解决方案,这是我正在考虑的选项之一.

我宁愿不要使用动力学.在过去大量使用它们时,我很难解决它们泄漏内存的问题.

解决方法:

我只是遇到了同样的问题,并通过在字典上使用枚举器解决了这个问题:

// Javascript in Jint:
var enumerator = myDictionary.GetEnumerator();
while (enumerator.MoveNext()) {
    var key = enumerator.Current.Key;
    var value = enumerator.Current.Value;
    // do stuff with key and/or value
}

如果您对myDictionary.Keys或myDictionary.Values都不感兴趣,可以使用相同的方法进行迭代.

注意:您提到可以使用dict [key].至少对于我有一个复杂结构作为键的我来说,这是行不通的.显然Jint无法很好地处理通用索引器并抛出:System.InvalidOperationException:未找到匹配的索引器.

标签:dictionary,jint,javascript,c
来源: https://codeday.me/bug/20191025/1930715.html