C# 是否能够处理方法版本?
例如,如果我在 Ruby 中有两个具有相同名称和参数的方法,则会执行最新版本。
C# 如何处理这个问题?它会引发错误或执行最新版本吗?
在 C# 中的同一个类中不能有两个具有相同名称和参数列表的方法。您需要以某种方式区分方法,使用不同的名称或不同的参数类型和/或不同数量的参数。你只会得到一个编译错误。
虽然在 C# 中没有方法的“最新版本”的概念,但听起来您正在尝试完成一种方法覆盖(我不熟悉 ruby,所以我不知道最新版本的含义),您可以通过子类化和方法覆盖来实现类似的目标。
如果它们完全相同(命名空间、类、名称和参数),则会出现编译错误。
成员重载已成为过去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 ;
}
在同一个类中不能有 2 个具有完全相同签名的方法。
至少参数必须不同,否则会出现编译错误。
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;
}
}