首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >省略的那种实例名称是什么?

省略的那种实例名称是什么?
EN

Stack Overflow用户
提问于 2015-10-19 15:13:29
回答 4查看 89关注 0票数 4

关于ASP.NET 5模板中的“快捷方式”,我有一个问题:

代码语言:javascript
复制
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
    {          
        var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
            .AddJsonFile("config.json")
            .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);

最后两行仅是方法调用,显然是构建器的调用。我认为这是100%相同的:

代码语言:javascript
复制
var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath);
builder.AddJsonFile("config.json");
builder.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);

在省略对象名称的情况下,您如何称呼这种语法?只在调用NEW/ctor时才有可能吗?有人能告诉我C#语言定义的那个部分吗?

我搜索过这个,但找不到答案。

编辑:如果您已经知道这个术语,那么这个问题显然与其他method-chaining问题非常相似,但我的问题并不是为了实现这个问题,而是为了正确地使用它并获得正确的文档。也许这个问题对谷歌来说是个不错的问题,因为我使用了VS模板中众所周知的源代码。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-19 15:18:04

我听说过这个被称为“方法链接”或“流利语法”的概念(取决于方法的语义)。例如,您可以在诸如jQuery之类的东西中看到它。简单地说,对象上的方法将修改该对象并返回修改后的版本。因此,可以立即对返回值调用另一个方法,依此类推。

代码没有“省略”builder变量。只是new ConfigurationBuilder(appEnv.ApplicationBasePath)返回一个ConfigurationBuilder对象。当您在一个.AddJsonFile()上调用ConfigurationBuilder时,它会修改这个对象,然后再返回它。因此,您可以根据自己的意愿链接到该对象的调用,并最终得到对象。

从技术上讲,第一个例子都是一行代码。回车是为了便于阅读。(请注意,在结尾之前没有分号。)C#只是忽略空白,并继续处理代码,直到到达语句的末尾(分号)。与VB这样的语言形成对比,在VB中,回车是语言的一部分,它本身终止了一条语句。

票数 4
EN

Stack Overflow用户

发布于 2015-10-19 15:15:17

这叫做方法链

原则是返回对this的引用,以便可以直接调用同一对象上的另一个方法。

这可以在每个不返回值的方法上完成,但大多数用于“安装”或“配置”函数,如您的示例中所示。

票数 1
EN

Stack Overflow用户

发布于 2015-10-19 15:17:54

看看这里:您可以看到一个类是如何支持方法链接的(在一个语句中互相调用方法)。

Fluent接口.方法链接

“您所需要做的就是创建一个对象,其方法总是返回对象本身。”之后,您可以“链接”方法(提供的链接中的完整示例)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33218012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档