百科问答小站 logo
百科问答小站 font logo



C# 中 加入 F# 中的那种 管道运算符 “|>” 会怎么样? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

管道运算符本质上是变更结合序的,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这样的函数,用处很有限,除非配合特定的类库。

但是特定的类库,那为什么不直接写特定的扩展方法呢?




  

相关话题

  c#中虽然异步和多线程是两码事,但是是否异步微软提供的async函数内部还是多线程去实现的? 
  面向对象中接口应该更抽象还是更具象? 
  动态绑定 C# 异步函数的 delegate 的类型应该是怎样的? 
  如今 Windows 软件开发究竟该用什么库,C#、Qt,还是其他? 
  c#多播或event监听太多后gc和时间都会爆炸,那么比起List<Action>存在的意义是什么? 
  为什么国内那么多公司乱用 C# 的三层架构? 
  游戏程序员必须要修 C# 吗?我徘徊在先开始 C++ 还是 C# ? 
  这篇博文c#比JAVA慢这么多 为什么? 
  如果编程语言有性别?Java、C++、C、C#是男是女?是GAY还是LES? 
  如何判断 string 是否为合法的 C# 变量名? 

前一个讨论
有什么东西是外国人不吃,而中国人吃的?
下一个讨论
堕胎合法那么为什么不允许告知孕妇胎儿性别?





© 2025-03-20 - tinynew.org. All Rights Reserved.
© 2025-03-20 - tinynew.org. 保留所有权利