C#中的这种链接叫什么?

你能告诉我C#中有哪种构造吗?

Code Golf:相当于Excel列名的数字

C.WriteLine(C.ReadLine() .Reverse() .Select((c, i) => (c - 64) * System.Math.Pow(26, i)) .Sum()); 

虽然我是C#的新手(到目前为止只有两个月),但自从我加入一个C#团队以来,我从未见过这种链接。 它真的吸引了我 ,我想了解更多。

请对此有所了解。

像这样链接的方法通常被称为流畅的界面 。

您可以通过实现返回调用对象的函数来创建自己的流畅界面。

对于一个简单的例子:

 class Foo { private int bar; public Foo AddBar(int b) { bar += b; return this; } } 

哪个可以用作:

 Foo f = new Foo().AddBar(1).AddBar(2); 

您还可以使用扩展方法实现流畅的界面。

例如:

 class Foo { public int Bar { get; set; } } static class FooExtensions { public static Foo AddBar(this Foo foo, int b) { foo.Bar += b; return foo; } } 

等等

这是一个更复杂的例子。 最后, Autofac和CuttingEdge.Conditons是开源库的两个例子,它们具有非常好的流畅接口。

它只是一个带有一些缩进的函数调用链,其中C调用ReadLine(),其结果用于Reverse,其结果用于Select等。函数本身是LINQ的一部分,后面使用的是翻译句法糖。 这是一个LINQ查询函数列表,以及它们的使用示例 , 这里是LINQ的教程。

(如果您感兴趣:Reverse()返回一个IEnumerable,它从给定的IEnumerable的后面到前面,Select()返回一个IEnumerable列出所有元素,在应用给定的lambda表达式后,Sum()只返回总和给定IEnumerable的所有元素。)

大多数表达式都没有什么特别之处,但是select方法使用了lambda表达式 ,这是Language Integrated Query的一个关键组件 – 简称LINQ。

.NET语言集成查询定义了一组通用标准查询运算符,允许在任何基于.NET的编程语言中以直接但声明的方式表示遍历,过滤和投影操作。

LINQ和它们使用的lambda表达式是一种简洁可读地编写复杂查询和操作表达式的方法。 它已在3.5中添加到.NET Framework中。 以下是来自MSDN的更多信息 。

链接模式可以称为Fluent接口。 它发生在接口的函数(或扩展方法)返回相同的接口时。 在这种情况下,它是IEnumerable。

你也可以使用Select和Sum函数抛出一些LINQ