2010-08-27 114 views
2

我可能有這個錯誤,但我已經看到了創建一個重載的方法,在定義中調用自己的方式。它是這樣的:在C#中使用'this()'調用重載方法的正確語法是什麼?

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

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

這是不正確的語法,我知道,但我找不到正確的語法由於某種原因。這是什麼正確的語法?

+2

的'這個()'語法可以僅被用於構造函數。 – 2010-08-27 15:06:09

回答

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

正是我在找的東西。謝謝。 – 2010-08-27 15:23:21

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

+1,不知道你能做到這一點。 – 2010-08-27 15:24:15

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); 
    } 
} 
+0

問題是關於重載,而不是重寫。 – Lee 2010-08-27 15:12:42

相關問題