有没有理由C#不支持手动内联方法?可选参数怎么样?

Let*_*man 2 c# inline optional-parameters

是否有任何设计理由(就像他们放弃多重继承的原因)?

或者它只是不够重要?

并且同样的问题适用于方法中的可选参数...这已经是vb.net的第一个版本...所以它肯定没有导致MS不允许可选参数的懒惰,可能是架构决策..而且似乎他们有改变主意,因为C#4将包括那个......

有人知道决定是什么,他们为什么要放弃?

编辑:

也许你没有完全理解我.我最近在计算程序(支持任意大小的数字,到最后一位数)上工作,其中一些方法每秒使用数百万次.

假设我有一个名为Add(int num)的方法,并且这个方法在使用1作为参数(Add(1);)时非常安静,我发现实现特殊方法特别适合一个方法更快.我并不是说重载 - 编写一个名为AddOne的新方法,然后将Add方法复制到其中,除了不是使用num我正在编写1.这对你来说可能看起来非常奇怪,但它实际上更快.

(尽管丑陋)

这让我想知道为什么C#不支持手动内联,这在这里非常有帮助.

谢谢.(你为什么投票给我:S)

编辑2:

我问自己是否要加上这个.我非常熟悉为这样的项目选择像dot net这样的平台的奇怪(和缺点),但我认为点网优化比你想象的更重要...尤其是诸如Any CPU等功能.

Ahm*_*eed 6

要回答部分问题,请参阅Eric Gunnerson的博客文章:为什么C#没有"内联"关键字?

他的帖子引用了一句话:

对于C#,内联发生在JIT级别,JIT通常做出正确的决定.

编辑:我不确定延迟可选参数支持的原因,但是说他们"放弃"它听起来好像他们应该根据我们对其他语言提供的期望来实现它.我想他们的优先级列表并不高,他们有最后期限可以为每个版本提供一些功能.到目前为止,它的重要性可能没有提高,特别是因为方法超载是一种可行的替代方案.同时我们得到了泛型(2.0),以及使LINQ成为可能的功能等(3.0).我对语言的进展很满意; 上述功能对我来说比在早期获得可选参数支持更重要.

  • @Itay:你能提供一个内联会帮助你的例子吗,JIT并没有为你做这件事吗?另外,你读过Eric的帖子了吗? (2认同)
  • @Itay:使用合适的工具来做正确的工作; 如果性能确实*那么重要,请在(非托管)汇编/ C/C++中编写该段代码,并从C#调用它(可能通过C++/CLI). (2认同)