创建内联函数和宏

时间:2014-04-29 20:38:54

标签: c# function macros inline

我知道这是错误的(尝试用C / C ++思维模式编写C#代码)。 但是可以在C#中创建内联函数/内联递归函数(直到第N个调用)/宏吗?

因为如果我打算调用相同的函数1000次,但它是一个简单的函数,那么创建堆栈的开销就很大了......而且没必要。

在C中我可以使用内联函数。在C#中有类似的东西吗?

再说一遍......我并不是说C / C ++更好......我只是C#的新手而没有人问这些简单的问题......

3 个答案:

答案 0 :(得分:3)

Inline functions in C#?

  

最后在.NET 4.5中,CLR允许强制1方法内联   使用MethodImplOptions.AggressiveInlining值。它也可用   在Mono的行李箱里(今天承诺)。

[MethodImplAttribute(MethodImplOptions.AggressiveInlining)] 
void Func()
{
    Console.WriteLine("Hello Inline");
}

答案 1 :(得分:1)

答案应该是:不要担心。除非你测试过,否则无需从微优化开始,这实际上是一个问题。 1000个函数调用没什么,直到它是什么。单个网络呼叫主要掩盖了这一点。写你的程序。根据目标检查效果。如果它的性能不够,请使用分析器并找出问题所在。

答案 2 :(得分:0)

是的,C#是一种非常强大的通用语言,几乎可以做任何事情。虽然内联函数/宏通常不受欢迎,但C#确实为您提供了多种工具,可以更简洁,更精确地完成此任务。例如,您可以考虑使用可在几乎所有形式的.NET应用程序(Web,桌面,控制台等)中使用(和重用)的模板文件。

http://msdn.microsoft.com/en-us/data/gg558520.aspx

来自文章:

  

T4模板可以为我做什么?

     

通过组合文字文本,命令式代码和处理指令,您可以将环境中的数据转换为项目的可构建工件。例如,在模板内部,您可以编写一些C#或Visual Basic代码来调用Web服务或打开Excel电子表格。您可以使用从这些数据源检索的信息来生成业务规则,数据验证逻辑或数据传输对象的代码。编译应用程序时,生成的代码可用。

如果您是编程新手,我建议不要实施模板。它们在N层应用程序中调试起来并不容易,因为它们是在运行时生成并运行的。然而,这是一个有趣的阅读,并开辟了许多可能性。