我知道这是错误的(尝试用C / C ++思维模式编写C#代码)。 但是可以在C#中创建内联函数/内联递归函数(直到第N个调用)/宏吗?
因为如果我打算调用相同的函数1000次,但它是一个简单的函数,那么创建堆栈的开销就很大了......而且没必要。
在C中我可以使用内联函数。在C#中有类似的东西吗?
再说一遍......我并不是说C / C ++更好......我只是C#的新手而没有人问这些简单的问题......
答案 0 :(得分:3)
最后在.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层应用程序中调试起来并不容易,因为它们是在运行时生成并运行的。然而,这是一个有趣的阅读,并开辟了许多可能性。