说你重写operator*
为point3
和float
,然后float
和point3
您使用的操作是这样的:有没有一种方法,以确定是否一个方法是要在C#中被内联
point3 * float
就可以知道如果运营商方法最终将内联?
说你重写operator*
为point3
和float
,然后float
和point3
您使用的操作是这样的:有没有一种方法,以确定是否一个方法是要在C#中被内联
point3 * float
就可以知道如果运营商方法最终将内联?
据我所知,由于JIT负责内联,所以无法确定。
不,你不能确定。尤其是,因为它是在JIT时间完成的,所以它将取决于CLR的版本 - 我相信64位CLR也会与32位版本不同。这也取决于是否启用优化(例如,您是否正在调试等)。
可以防止内嵌在MethodImplAttribute,但这并没有太大的帮助......
没有办法知道如果一个特定的方法将内联与否。 C#本身不会内联一个方法调用。只有JITer会这样做。虽然某些操作可能会被内联,但JITer不作任何保证。
谢谢乔恩。出于好奇,你知道为什么要防止它吗? – 2009-02-11 19:33:55