为什么C#没有提供“缺省参数”

在论坛上经常看到C#里有没有缺省参数的问题,在 C# Team的blog 里看到 Eric Gunnerson 的一篇文章 Why doesn't C# support default parameters?

看完后想起原来用Reflector反编译看Int32的ToString函数的时候,三个重载的函数代码分别是:

![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)public override string ToString()  
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)![](http://www.cnblogs.com/Images/dot.gif){  
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)      return this.ToString(null, null);  
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)}  
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)public string ToString(string format)  
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)![](http://www.cnblogs.com/Images/dot.gif){  
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)      return this.ToString(format, null);  
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)}  
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)public string ToString(string format, IFormatProvider provider)  
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)![](http://www.cnblogs.com/Images/dot.gif){  
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)      return Number.FormatInt32(this.m_value, format,   
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)           NumberFormatInfo.GetInstance(provider));  
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)}

  
  
| 


当时只是想这样的定义可以减少代码量,在调用时比较一致等,但是没想到还和缺省参数有关系![](http://www.cnblogs.com/Emoticons/tongue_smile.gif)  

Published At
Categories with Web编程
Tagged with
comments powered by Disqus