相关疑难解决方法(0)

Object.GetHashCode()的默认实现

默认实现如何GetHashCode()工作?它是否有效且足够好地处理结构,类,数组等?

我试图决定在什么情况下我应该自己打包,在什么情况下我可以安全地依赖默认实现来做好.如果可能的话,我不想重新发明轮子.

.net hash gethashcode

155
推荐指数
4
解决办法
5万
查看次数

MethodImplOptions.InternalCall有什么意义?

BCL中的许多方法都标有 [MethodImpl(MethodImplOptions.InternalCall)]属性.这表明 "方法是在公共语言运行时本身内实现的".

以这种方式设计框架的重点是指定了运行时将被强制实现的显式CIL指令?最终,该属性正在为运行时创建合同义务,但在某种程度上,我觉得这种方式令人困惑,而且不是很明显.

例如,Math.Pow本来可以用这种方式编写(请原谅我非正式的C#+ IL和IL本身,如果它不好的话;这只是一个解释我的观点的样本):

public static double Pow(double x, double y)
{
    ldarg.0
    ldarg.1
    pow // Dedicated CIL instruction
    ret
}
Run Code Online (Sandbox Code Playgroud)

而不是当前的方式:

[MethodImpl(MethodImplOptions.InternalCall)]
public static double Pow(double x, double y);
Run Code Online (Sandbox Code Playgroud)

为什么MethodImplOptions.InternalCall存在?

.net clr cil framework-design

30
推荐指数
2
解决办法
9342
查看次数

标签 统计

.net ×2

cil ×1

clr ×1

framework-design ×1

gethashcode ×1

hash ×1