- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在尝试为 SQL Server 编写 CLR 过程时注意到,由于属性为 [HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
,因此不允许使用 HashSet。 . SQL Server CLR 过程不允许使用 MayLeakOnAbort
的对象。已设置。好的,所以在 CLR 过程中需要避免一些类,甚至可能三思而后行在 CLR 过程之外使用。奇怪的是Dictionary<K,V>
没有类似的限制。现在基于我对什么是 HashSet 和 Dictionary 是什么的理解,我希望 Dictionary 应该具有 Hashset 的所有复杂性和 then 一些。那么,为什么 Dictionary 没有类似的限制呢?我正在“三思而后行使用 HashSet<T>
”并认真考虑改用字典,即使我没有编写 CLR 过程并且只需要一个可以快速测试复杂键成员资格的集合(未定义比较、散列或相等接口(interface)的对象的对象引用)。我最好使用哈希集或字典吗? Hashset 的不同之处在于它允许使用没有比较或相等接口(interface)的类,纯粹基于内存地址或其他可能是 HashSet 不太“干净”的原因?
最佳答案
HashSet<T>
包含 IntersectWith
等方法使用 stackalloc
使用不安全代码实现的. Dictionary<TKey, TValue>
不包含任何此类方法。虽然可以将自己的程序集标记为不安全,并避免使用有风险的方法,但我只是放弃并使用了 Dictionary<T, bool>
在 SQL CLR 函数中,所有值都是 true
,正是因为这个原因。
关于c# - 为什么 HashSet<T> 归因于 MayLeakOnAbort,但 Dictionary<K,V> 没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23140885/
我在 SaaS 程序中工作,该程序允许您输入带有一些 html 的自定义 CSS 文件。这意味着我无法从他们的代码中删除任何内容,只能覆盖它。我在他们的代码中找到了一个 element.style 但
我想知道是否可以在 java 中使用赋值(?)表达式将数字归因于字符串? 假设我们有: String strA = "Hello"; String strB = "Hi"; 我们能否以某种方式将 1
我刚开始学习 C,但我很难理解为什么下面的代码能正常工作: void convertMyNumber (float myValue) { int myNewValue = floor(myVa
我在尝试为 SQL Server 编写 CLR 过程时注意到,由于属性为 [HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAb
我是一名优秀的程序员,十分优秀!