Каков правильный синтаксис для вызова перегруженного метода с использованием this () в C #? - PullRequest
2 голосов
/ 27 августа 2010

Возможно, это неправильно, но я видел способ создания перегруженного метода, который вызывает себя в определении. Это что-то вроде:

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

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

Я знаю, что это неправильный синтаксис, но по какой-то причине нигде не могу найти правильный синтаксис. Какой правильный синтаксис для этого?

Ответы [ 3 ]

7 голосов
/ 27 августа 2010

Вы путаете синтаксис конструктора для синтаксиса метода. Единственный способ сделать это для метода очевиден:

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)
    { }

}
6 голосов
/ 27 августа 2010

Просто сделайте это:

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

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

Вы путаете перегрузку с переопределением.Вы можете вызвать базовый конструктор из производного класса следующим образом:

public MyConstructor(int foo) 
   :base (10)
{}
0 голосов
/ 27 августа 2010
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);
     }
}
...