說你重寫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