我可能有这个错误,但我已经看到了创建一个在定义中调用自身的重载方法的方法。它类似于:
public void myFunction(int a, int b)
{
//Some code here
}
public void myFunction(int a) : this (a, 10)
{ }
这不是正确的语法,我知道,但由于某种原因我无法在任何地方找到正确的语法。这个的正确语法是什么?
答案 0 :(得分:7)
您对方法语法的构造函数语法感到困惑。对方法这样做的唯一方法是显而易见的:
public void myFunction(int a, int b)
{
//Some code here
}
public void myFunction(int a)
{
myFunction(a, 10) ;
}
虽然从C#4开始,您可以使用可选参数:
public void myFunction(int a, int b = 10)
{
//Some code here
}
你写的内容对于构造函数来说是接近正确的:
public class myClass
{
public myClass(int a, int b)
{
//Some code here
}
public myClass(int a) : this (a, 10)
{ }
}
答案 1 :(得分:6)
这样做:
public void myFunction(int a, int b)
{
//Some code here
}
public void myFunction(int a)
{
myFunction(a, 10)
}
你在重写时会让人感到困惑。您可以从派生类中调用基础构造函数,如下所示:
public MyConstructor(int foo)
:base (10)
{}
答案 2 :(得分:0)
public class BaseClass {
public virtual void SomeFunction(int a, int b) {}
}
public class Derived : BaseClass {
public override SomeFunction(int a, int b) {
base.SomeFunction(a, b * 10);
}
}