0

C# 是否能够处理方法版本?

例如,如果我在 Ruby 中有两个具有相同名称和参数的方法,则会执行最新版本。

C# 如何处理这个问题?它会引发错误或执行最新版本吗?

4

5 回答 5

2

在 C# 中的同一个类中不能有两个具有相同名称和参数列表的方法。您需要以某种方式区分方法,使用不同的名称或不同的参数类型和/或不同数量的参数。你只会得到一个编译错误。

虽然在 C# 中没有方法的“最新版本”的概念,但听起来您正在尝试完成一种方法覆盖(我不熟悉 ruby​​,所以我不知道最新版本的含义),您可以通过子类化和方法覆盖来实现类似的目标。

于 2012-08-16T08:35:22.503 回答
1

如果它们完全相同(命名空间、类、名称和参数),则会出现编译错误。

于 2012-08-16T08:35:38.557 回答
1

成员重载已成为过去c#

在使用optional parameters中要好得多。没有重复的代码,需要维护的代码更少。

public int SomeCalcMethod(int object1, int object2, int? object3 = null)
{
   return object1 + object2 + (int)(object3 ?? 0);
}

无需重载方法:

public int SomeCalcMethod(int object1 , int object2)
{
    return object1 + object2;
}

public int SomeCalcMethod(int object1 , int object2, int object3 )
{
    return object1 + object2+ object3 ;
}
于 2012-08-16T08:52:19.897 回答
0

在同一个类中不能有 2 个具有完全相同签名的方法。

于 2012-08-16T08:36:26.307 回答
0

至少参数必须不同,否则会出现编译错误。

class CalculateSomething
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return number1 + number2 + number3;
    }
}
于 2012-08-16T08:41:16.250 回答