使用 => 运算符从 Serilog 到记录器



我知道=>运算符可以用于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时都会执行。

它看起来是一样的,行为可能是相同的,但执行是不同的。

最新更新