C#能够处理方法版本吗?例如,如果我在Ruby中有两个具有相同名称和参数的方法,则会执行最新版本。是否有可能在C#中有两种类似的方法(名称和参数),比如Ruby?
C#如何处理?它会引发错误还是执行最新版本?
C#能够处理方法版本吗?例如,如果我在Ruby中有两个具有相同名称和参数的方法,则会执行最新版本。是否有可能在C#中有两种类似的方法(名称和参数),比如Ruby?
C#如何处理?它会引发错误还是执行最新版本?
您不能在C#中的同一个类中有两个具有相同名称和参数列表的方法。您需要以某种方式区分这些方法,或者使用不同的名称或不同的参数类型和/或不同数量的参数。你只会得到一个编译错误。尽管在C#中没有“最新版本”方法的概念,但它听起来像是在试图完成一种方法重写的形式(我不熟悉ruby,所以我不知道最近的版本版本意味着),你可以通过子类和方法覆盖来实现类似的功能。
如果它们完全相同(命名空间,类,名称和参数),则会出现编译错误。
您不能在同一个类中拥有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;
}
}
Member Overloading是好得多过去的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-16 08:36:06
@AlexanderR Yup,当然,但我想知道是否有可能使用我不知道的东西。 – RKh 2012-08-16 08:41:23
C#是编译语言,所以代码将被编译,如果两个具有相同名称和参数的方法会导致代码不明确。在ruby中,它被解释为不会重新定义方法的问题。 – 2012-08-16 08:44:28