管道运算符本质上是变更结合序的,C#对应的解决方案是扩展方法,C#压根儿没有多少独立函数,静态函数还需要带上个类型前缀,虽然现在有了using static,但是库函数并没有多少,引入管道运算符没啥意义。
C Style这种括号解决一切的语言方案的好处就是易于理解,因为缺少结合序变更运算符,表达式的写法相对固定。引入这种运算符和C#的风格相冲突。
而且如果你真的很喜欢这种写法,自己写个扩展方法就完了:
public static TResult Call<T, TResult>( this T args, Func<T, TResult> foo ) => foo( args );
事实上,这种扩展方法在特定的领域的确是有意义的,C#语法已经够灵活了,不需要再弄一些实验性质的语法进来……
你可以自己去试一下,就会发现大多数情况下没啥意义……
发现很多人没看懂这个扩展方法?
这个扩展方法是这么用的:
using static System.Math; static void Main( string[] args ) { 1.Call( Abs ); }
当然如果你喜欢,可以写一系列的扩展方法,应对俩参数,仨参数等等方法……
但是从这个方法就能看出来,C#压根儿没有多少Abs这样的函数,用处很有限,除非配合特定的类库。
但是特定的类库,那为什么不直接写特定的扩展方法呢?