有没有办法确定一个方法是否将在C#中内联

时间:2009-02-11 19:13:54

标签: c# .net inline

假设您覆盖operator*point3的{​​{1}},然后覆盖floatfloat,您使用了这样的运算符:

point3

你能知道运算符方法是否最终会内联?

3 个答案:

答案 0 :(得分:5)

不,你无法确定。特别是,因为它是在JIT时完成的,它将取决于CLR的版本 - 我相信64位CLR也与32位的内核不同。它还取决于是否启用了优化(例如,您是否正在调试等)。

您可以阻止使用MethodImplAttribute进行内联,但这无济于事......

答案 1 :(得分:2)

据我所知,由于JIT负责内联,因此无法确定。

答案 2 :(得分:2)

无法知道某个特定方法是否内联。 C#本身不会内联方法调用。只有JITer会这样做。虽然某些操作可能会被内联,但JITer不做任何保证。