Zac*_*ack 4 javascript c# dictionary jint
我有一个 .NET Generic Dictionary<>,我想将它传递给我在 Jint 中运行的 JavaScript 函数。
Jint 不会将 .NET Dictionary 视为可以像 Dictionary 一样对待的 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
}
Run Code Online (Sandbox Code Playgroud)
如果您对两者都不感兴趣,您可以以同样的方式迭代 myDictionary.Keys 或 myDictionary.Values。
注意:您提到可以使用dict[key]. 至少对我来说,我有一个复杂的struct关键,这是行不通的。显然,Jint 不能很好地处理通用索引器并抛出:System.InvalidOperationException: No matching indexer found。
| 归档时间: |
|
| 查看次数: |
1995 次 |
| 最近记录: |