我遇到了一些代码
public int MaxHealth =>
Memory[Address].IsValid ?
Memory[Address].Read<int>(Offs.Life.MaxHp) :
0;
Run Code Online (Sandbox Code Playgroud)
现在我对Lambda表达式有点熟悉了.我只是没有看到它以这种方式使用它.
上述陈述与之间的区别是什么?
public int MaxHealth = x ? y:z;
Run Code Online (Sandbox Code Playgroud) 我有时会在getter的属性中看到缩写.例如这两种类型:
public int Number { get; } = 0
public int Number => 0;
Run Code Online (Sandbox Code Playgroud)
如果这两者之间有任何差异,有人可以告诉我.他们的表现如何?它们都是只读的吗?
我想了解一下IL代码.
所以你看到表达bodied的代码比GetOld代码少.是否在那里进行了一些优化并且意味着表达体语法更高效?
或者它真的没关系?
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; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
并使用DotPeek生成IL代码
https://gist.github.com/anonymous/9673389a1a21d0ad8122ec97178cfd9a