c# - 具有不同返回类型的方法重载

标签 c# .net oop coding-style

<分区>

我想深入探讨一下,无论是歧义还是提供的额外功能:

 public class Foo 
 { 
    public int Bar(){
       //code
    }

    public string Bar(int a){
       //code
    }
 }

任何对此有任何经验的人,使用不同参数重载返回类型应该是一种不好的做法,对吗?

但是如果重载是在返回类型的基础上完成的,那么为什么这不起作用。

 public class Foo 
 { 
    public int Bar(int a){
       //code
    }

    public string Bar(int a){
       //code
    }
 }

如果我们调用 obj.Bar(); 它将无法决定调用第一个还是第二个函数; ,它应该以错误结束,有人知道为什么它允许第一个代码片段运行吗?

最佳答案

C# 规范(第 10.6 节)规定重载成员可能不会仅因返回类型而异,并且根据 http://msdn.microsoft.com/en-us/library/ms229029.aspx

根据您关于创建参数只是为了支持不同的返回类型的问题?我个人认为这是解决问题的糟糕方法。代码维护将变得困难,未使用的参数是一种明确的代码气味。在那种情况下真的需要重载该方法吗?或者它属于那个类?是否应该创建其他东西来从一种返回类型转换为另一种?为了获得更惯用的解决方案,您应该提出的所有问题。

关于c# - 具有不同返回类型的方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20705643/

相关文章:

c# - 构建 C# EntityFramework IQueryable 表达式时遇到问题

.net - Windows 7 Starter 真的不支持.Net 框架吗?

PHP 面向对象编程 - 高级技术书籍

java - java 的得墨忒尔法则

c# - 通过 LINQ 更改此循环?

C# linq to json 如何读取数组中的属性值

c# - 将 IOptions<> 注入(inject)静态类

c# - StatusBar 中的 WPF ProgressBar 不会拉伸(stretch)

java - 以破坏性方式从 WebSphere 读取消息

c - 在c中的结构体中声明变量