本文介绍了IL级别的Expression主体语法与Getter语法之间有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想稍微了解一下IL代码。
I would like to understand the IL code a bit.
因此,如您所见,表达式体式的代码少于GetOld代码。
So as you see the expression bodied has less code than the GetOld code. Is it some optimization done there and means expression body syntax is more performant?
还是真的没有关系吗?
namespace DatabaseModules {
public class Test {
public IList<string> _cache = new List<string>();
public Test() {
}
public IList<string> Get => _cache;
public IList<string> GetOld {
get { return _cache; }
}
}
}
以及生成的IL代码使用DotPeek
And the generated IL Code using DotPeek
推荐答案
没有。该代码使用罗斯林,所以IL的不同:
There is none. That code compiles to the exact same C# using Roslyn, so the IL is no different:
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
[assembly: AssemblyVersion("0.0.0.0")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[module: UnverifiableCode]
namespace DatabaseModules
{
public class Test
{
public IList<string> _cache = new List<string>();
public IList<string> Get
{
get
{
return this._cache;
}
}
public IList<string> GetOld
{
get
{
return this._cache;
}
}
}
}
这篇关于IL级别的Expression主体语法与Getter语法之间有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!