在C#中使用'this()'调用重载方法的正确语法是什么?

时间:2010-08-27 15:03:28

标签: c# syntax overloading

我可能有这个错误,但我已经看到了创建一个在定义中调用自身的重载方法的方法。它类似于:

public void myFunction(int a, int b)
{
    //Some code here
}

public void myFunction(int a) : this (a, 10)
{ }

这不是正确的语法,我知道,但由于某种原因我无法在任何地方找到正确的语法。这个的正确语法是什么?

3 个答案:

答案 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);
     }
}