Jon*_*eet 14
我看到的答案假设你在谈论编译或JIT时间内联 - 而且它们完全正确.但是,我所听到的"内联"一词的另一个用途是用于lambda表达式 - 在C#中,类似于:
public IEnumerable<int> Foo()
{
int[] numbers = new[] { 1, 5, 2, 5, 6 };
return numbers.Select(x => x+10);
}
Run Code Online (Sandbox Code Playgroud)
的x => x+10(lambda表达式)可视为在源代码的术语"内联函数",因为它是一个额外的功能在另一种方法中声明"内联".
是的,VB9有这个:
Dim len As Func(Of String, Integer) = Function(x) x.Length
Console.WriteLine(len("foo"))
Run Code Online (Sandbox Code Playgroud)
我相信VB9与C#相比有更多限制 - 例如,我不认为你可以Action<T>在VB9中使用lambda表达式创建一个(或任何其他具有void返回类型的委托类型),而在C#中它很容易.同样地,我认为lambda必须只是VB9中的单个表达式,而在C#中,它可以是括号中的整个块.
从VB10开始,您也可以在VB中创建多行lambda表达式.
当然,如果问题实际上是指执行而不是源代码,那么所有这些都是无关紧要的:)
内联是CLR(JIT)的责任,并且在内联函数时存在一些条件:
正如您可能会发现的那样,32字节在代码方面不是很多,它适用于快速和小的if-else条件测试,属性getter/setter.我不认为您可以通过内联更多代码获得任何速度.
5年后这个问题还有一些活动(已经???)
只需使用此属性
<MethodImplAttribute(MethodImplOptions.AggressiveInlining)>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15783 次 |
| 最近记录: |