【发布时间】:2019-10-16 17:23:14
【问题描述】:
在 Google 上快速搜索“内在属性 c#”只会返回有关其他属性的文章,例如 [Serializable]。显然,这些被称为“内在属性”。
但是,C# 中还有一个属性,它本身称为[Intrinsic],我正试图弄清楚它到底是什么以及它是如何工作的。它不存在于 .NET 文档的 common attributes 页面上,或者据我所知文档中的其他任何地方。
此属性在 .NET Core 内部的多个位置使用,例如,在 System.Numerics.Vectors 文件夹中,例如 Vector2_Intrinsics.cs。代码sn-p:
[Intrinsic]
public Vector2(float x, float y)
{
X = x;
Y = y;
}
【问题讨论】:
-
此属性的源代码可在此处获得:github.com/dotnet/coreclr/blob/master/src/… 其中包括一些 cmets。
-
JitIntrinsicAttribute似乎可能相关:stackoverflow.com/questions/26903933/… -
这里是github.com/dotnet/corefx/issues/22940 的提案,您可以详细了解它并关注集成的推动
-
只是在代码中使用 MethodInfo 时可以使用的注解。龙住在那里,你不想 Invoke() 它。并不是说这是一个非常实际的问题,但是 Microsoft 支持可以通过指出您可以添加测试来轻松地让您挂断电话。 .NET 中还有许多其他内在函数,例如 Math.Sqrt()。处理器具有专用的机器代码指令,因此无需生成方法调用,非常有效。然而,用反射调用它是可以的,mscorlib.dll 仍然有它的方法。
标签: c# .net .net-core intrinsics