问题标签 [defensive-copy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
28 浏览

c# - 有没有办法在委托、Func<>s 或 IComparers 中使用“in”关键字?

如果问题措辞不佳,我深表歉意,这是一个很难表达或寻找答案的问题,并且将“in”关键字用于逆变代表也无济于事。这是我可以描述它的最佳方式:

设置:

'in' 关键字意味着这些操作会引发转换错误:

因为参数使用'in'关键字的函数与不使用'in'关键字的函数不同,所以在我看来,没有任何方法可以以这种方式将委托(或IComparer等)与关键字一起使用。库中是否有旨在处理这些情况的东西,或者在更具体的情况下是否有另一种方法可以获得相同的效率*?

(* 注意:在这种情况下,T 可能是一个巨大的不可变结构,大量存在并且被频繁访问,因此避免防御性复制非常有用。)

编辑:这是对代码的更完整的了解:

我认为一些额外的东西不能说明问题本身: