C# “使用”的好处是什么;表达式体函数和性质“;
我确实见过很多人使用这个新功能,但是使用这些表达式有什么好处呢 :C# “使用”的好处是什么;表达式体函数和性质“;,c#,c#-6.0,C#,C# 6.0,我确实见过很多人使用这个新功能,但是使用这些表达式有什么好处呢 : public override string ToString()=>string.Format(“{0},{1}”,第一,第二); 公共字符串文本=> 格式(“{0}:{1}-{2}({3})”,时间戳,进程,配置,用户); 这个问题不同于,因为我不仅要问性能和效率是否发生了变化,还要问编译代码(IL代码)的差异,以及它是否是最佳实践,是否应该在现实世界中使用 这个问题也是而不是,因为我要求的是现实生活中的企业经验,而不是建
public override string ToString()=>string.Format(“{0},{1}”,第一,第二);
公共字符串文本=>
格式(“{0}:{1}-{2}({3})”,时间戳,进程,配置,用户);
这个问题不同于,因为我不仅要问性能和效率是否发生了变化,还要问编译代码(IL代码)的差异,以及它是否是最佳实践,是否应该在现实世界中使用
这个问题也是而不是,因为我要求的是现实生活中的企业经验,而不是建议。因此,请不要推荐,但请解释您为什么会或为什么不使用该功能,以及您使用该功能的经验 它提供了更好的可读性,并在代码中节省了一些空间。回答我的一个问题就更好了。我已经测试过,如果IL代码与以下结果相同: 。。。将生成相同的IL代码:
00993376 call [random value]
0099337B mov dword ptr [ebp-40h],eax
0099337E mov ecx,dword ptr [ebp-40h]
00993381 call 71886640
00993386 nop
}
00993387 nop
00993388 lea esp,[ebp-0Ch]
0099338B pop ebx
0099338C pop esi
0099338D pop edi
0099338E pop ebp
0099338F ret
[random value]
部分是唯一已更改的代码,这是有意义的,因为它在每次编译时都会更改
我仍然是一名在校学生,因此我只能从我的角度回答其他问题(这不是企业观点):
- “表达式体函数和属性”看起来确实是一个很好的实践,因为它的代码更紧凑,可读性更强。(thx至和)
- 使用它们也是有意义的,因为它们看起来更模块化,更像OOP代码
从性能的角度来看,您可以这样写:
public bool MyProperty {
get {
return myMethod();
}
}
private bool myMethod() {return true;}
或者这个:
public bool MyProperty => myMethod();
private bool myMethod() {return true;}
没有区别,因为它以相同的方式被翻译成IL
。但请注意这一点:主体表达式是Visual Studio 2015及更新版本默认提供的功能,但如果您想在较旧的VS版本中使用,则需要从NuGet安装C#6.0。简洁。写同样的东西,但更短。它允许开发人员省略大括号和返回语句。可读性?紧凑性?汽车性能的好处是什么?有趣的方法。它是否还提供性能增强功能?有关性能和生成的IL的区别,请参阅链接问题:它是相同的。至于它是否是良好的实践,或者使用它的好处是什么;这是一种主观意见(因此,对于SO而言,这是一种离题的意见)。使用它,如果你喜欢它,不要使用它,如果你不喜欢它。它比较短,所以对很多人来说已经足够了。但我个人会避免使用它,因为涉及的表达式会变得更长或更复杂。其他Visual Studio IDE也支持c#6.0:您也可以在方法声明中使用表达式体
public bool MyProperty=>myMethod();私有bool myMethod()=>true代码>这是一个关于使用这些表达式的好处的简短而好的回答。再加1!尽管它使方法更加简洁,但我发现扩展的方法声明更容易直观,因为它们在类成员之间保持一致的缩进。
public bool MyProperty => myMethod();
private bool myMethod() {return true;}