.net Framework 4 中的 C#6 表达式

C#6 expression in .net framework 4

我有这个 C# 6 表达式

private int ProxyQueueTimeoutMs => ((MultiProxyCrawlConfiguration) _config).ProxyQueueTimeoutMs;

是否存在 C#6 之前的 C# 等效项? 是否可以在.net framework 4 等旧版本中编写类似的方法?

您可以在项目中包含 Microsoft.Net.Compilers NuGet 包,它将替换所使用的 C# 编译器,以便您可以面向 C#6.0。

https://www.nuget.org/packages/Microsoft.Net.Compilers/

这应该使您能够将 C#6.0 与 .NET 4 一起使用。我已经将它用于 .NET 4.5

这种语法叫做Expression-bodied function members。它等同于 ProxyQueueTimeoutMs 属性 和 getter 在 => 部分之后的 returns 等同于;

private int ProxyQueueTimeoutMs
{
   get 
   { 
       return ((MultiProxyCrawlConfiguration) _config).ProxyQueueTimeoutMs;
   }
}

在 C# 6 之前你可以用这种方式做到这一点

private int ProxyQueueTimeoutMs
{
    get
    {
        return ((MultiProxyCrawlConfiguration) _config).ProxyQueueTimeoutMs;
    }
}

您可以在任何 .NET 版本中编写 C# 6,因为 C# 由编译器处理,而不是由 .NET Framework 版本处理。

它是私有只读 属性,使用新的 C# 6 表达式主体 属性 语法定义。

早期版本的 C# 的等效代码是

private int ProxyQueueTimeoutMs
{
    get
    {
        return ((MultiProxyCrawlConfiguration)_config).ProxyQueueTimeoutMs;
    }
}