关于ASP.NET 5模板中的“快捷方式”,我有一个问题:
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);最后两行仅是方法调用,显然是构建器的调用。我认为这是100%相同的:
var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath);
builder.AddJsonFile("config.json");
builder.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);在省略对象名称的情况下,您如何称呼这种语法?只在调用NEW/ctor时才有可能吗?有人能告诉我C#语言定义的那个部分吗?
我搜索过这个,但找不到答案。
编辑:如果您已经知道这个术语,那么这个问题显然与其他method-chaining问题非常相似,但我的问题并不是为了实现这个问题,而是为了正确地使用它并获得正确的文档。也许这个问题对谷歌来说是个不错的问题,因为我使用了VS模板中众所周知的源代码。
发布于 2015-10-19 15:18:04
我听说过这个被称为“方法链接”或“流利语法”的概念(取决于方法的语义)。例如,您可以在诸如jQuery之类的东西中看到它。简单地说,对象上的方法将修改该对象并返回修改后的版本。因此,可以立即对返回值调用另一个方法,依此类推。
代码没有“省略”builder变量。只是new ConfigurationBuilder(appEnv.ApplicationBasePath)返回一个ConfigurationBuilder对象。当您在一个.AddJsonFile()上调用ConfigurationBuilder时,它会修改这个对象,然后再返回它。因此,您可以根据自己的意愿链接到该对象的调用,并最终得到对象。
从技术上讲,第一个例子都是一行代码。回车是为了便于阅读。(请注意,在结尾之前没有分号。)C#只是忽略空白,并继续处理代码,直到到达语句的末尾(分号)。与VB这样的语言形成对比,在VB中,回车是语言的一部分,它本身终止了一条语句。
发布于 2015-10-19 15:15:17
发布于 2015-10-19 15:17:54
看看这里:您可以看到一个类是如何支持方法链接的(在一个语句中互相调用方法)。
“您所需要做的就是创建一个对象,其方法总是返回对象本身。”之后,您可以“链接”方法(提供的链接中的完整示例)
https://stackoverflow.com/questions/33218012
复制相似问题