使用CallerMemberName和MethodImplOptions.NoInlining - 是否有必要?

时间:2017-11-06 13:33:47

标签: c# attributes .net-4.5

快速背景: 尝试创建一个方法,该方法将根据调用它的方法返回预定义的字符串。 (有点掩饰但足够近)。

我打算使用[CallerMemberName]属性,但我的问题是:

=>我是否需要将MethodImplOptions.NoInlining与此属性一起使用,还是由编译器隐式应用?

有许多CallerMemberName属性的示例,以及使用MethodImplOptions.NoInlining方法属性的pre .net4.5框架的旧版本,但没有明确表示您不需要一起使用它们?

提前致谢,并阅读!

1 个答案:

答案 0 :(得分:2)

没有必要,因为CallerMemberName在编译时由编译器解析:

  

来电者信息值作为文字发布到中级   编译时的语言(IL)。

内联不是由C#编译器完成的,而是由JIT在将IL代码编译为汇编时完成的,因此内联不会影响std::vector<int> indices; auto it = m_octree->breadth_begin(); it.getBranchContainer().getPointIndices(indices) 提供的功能。