【问题标题】:Method overload in c# returns wrong result with different return typec#中的方法重载返回不同返回类型的错误结果
【发布时间】:2014-08-14 10:16:39
【问题描述】:

我尝试在 C# 中检查方法重载 因为下面的代码输出是 21 而不是 22。对吗?

static void Main(string[] args)
        {
            double d = AddTwoNumbers(10 , 10);
            Console.Write("Result : {0}", d);
            Console.ReadKey();
        }

        static int AddTwoNumbers(int a, int b)
        {
            return a + b + 1;
        }

        static double AddTwoNumbers(double a, double b)
        {
            return a + b + 2;
        }

【问题讨论】:

  • 最佳重载由方法参数选择,而不是返回类型。以AddTwoNumbers(10d , 10d) 为例。

标签: c# oop methods type-conversion overloading


【解决方案1】:

10 被视为integer,而不是double,除非您明确指定:

// using 'd' literal
double d = AddTwoNumbers(10d , 10d);

// Or via explicit cast
double d = AddTwoNumbers((double)10, (double)10);

【讨论】:

  • 但是返回类型是 double 所以编译器应该把第二种方法视为兼容的。
  • @Shri 返回类型不是重载决议的一部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多