繁体   English   中英

C#中的return _是什么

[英]What is the return _ in C#

我对C#中从未见过的事情有疑问。 在新的asp.net依赖注入的服务提供者中,有一个方法, return _ => null;

https://github.com/aspnet/DependencyInjection/blob/dev/src/Microsoft.Framework.DependencyInjection/ServiceProvider.cs第63-72行。

问题的方法:

private Func<MyServiceProvider, object> CreateServiceAccessor(Type serviceType)
{
    var callSite = GetServiceCallSite(serviceType, new HashSet<Type>());
    if (callSite != null)
    {
        return RealizeService(_table, serviceType, callSite);
    }
    return _ => null;
}

什么是_ 它是C#6中的新功能吗? 除非您需要命名约定,否则搜索return _不会返回任何有用的内容。

如果你没有在lambda中使用参数,人们使用_作为约定来表示。

在您的代码中,如果未将serviceType解析为调用站点,则会出现这种情况。 由于您不关心serviceType返回null,因此_用于该参数。

这可能是这篇帖子的重复,有很多信息:

C#风格:Lambdas,_ =>或x =>?

_是有效的C#标识符,因此_ => nullmyServiceProvider => null相同

定义什么是有效的标识符并不像检查允许字符的白名单的字符那么简单,但是这里记录

对于C#7以上,语言(或编译器)认识到单个_表示不重要的值的约定: https//docs.microsoft.com/en-us/dotnet/csharp/discards

从C#7.0开始,C#支持丢弃,这是在应用程序代码中故意不使用的临时虚拟变量。 丢弃等同于未分配的变量; 他们没有价值。 因为只有一个discard变量,并且该变量甚至可能不被分配存储,所以丢弃可以减少内存分配。 因为它们使代码的意图变得清晰,所以它们增强了可读性和可维护性。

通过为下划线(_)指定变量,可以指示变量是丢弃的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM