我知道=>
运算符可以用于lambda表达式和表达式体定义(请参见https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-operator)。但我最近遇到了这行代码,我不确定为什么要使用=>
运算符。
private static Serilog.ILogger Log => Serilog.Log.ForContext<DriverConfig>();
如果我更改=>to=运算符?如下所示:
private static Serilog.ILogger Log => Serilog.Log.ForContext<DriverConfig>();
它们不是lambda的,但看起来和闻起来都像它们。他们是表情体成员
它减少了代码量以获得更可读的表单
private static Serilog.ILogger Log => Serilog.Log.ForContext<DriverConfig>();
等于
private static Serilog.ILogger Log
{
get
{
return Serilog.Log.ForContext<DriverConfig>();
}
}
如果您从=>
中删除>
,那么这一切都取决于执行该行的时间。第一个=
在实例化静态时运行,然后完成,并且不会重新评估。后者作为get工作,每次调用get时都会执行。
它看起来是一样的,行为可能是相同的,但执行是不同的。