2017-11-08 9 views
-1

私が過負荷とオプションのparamsでこの機能を持っている:()(FNを呼び出して)何のparamsは、彼らに渡していないときに、これらの機能は、同じ作業を行うオプションのパラメータのみを持つ関数に複数のオーバーロードを定義する方法はありますか?

public void fn(int a = 0) 
{...} 

public void fn(string a = "0") 
{...} 

、ないparamはそれに渡されていないと私は、この関数を呼び出すことはできませんこのエラーの理由:

The call is ambiguous between the following methods or properties ...

+0

これは言語のパズルのように見えますが、それは非常に不明です。 –

+0

@MichałTurczyn私を信じてください。 – SeM

答えて

2

あなただけの空のパラメータを持つメソッドを作成する必要があります。

エラーが唯一の私がどうなる
public void fn(int a) 
{ 

} 
public void fn(string a) 
{ 

} 

public void fn() 
{ 
    //Your code goes here 
} 

コンパイラはその点で何を呼び出すべきか分からないので、あなたはfn()にパラメータを渡しません。したがって、オプションのパラメータは理にかなっていません。

+2

これは当てはまりますが(コンパイルして動作します)、他のオーバーロードでオプションのパラメータを残しておくと、 'fn()'オーバーロードを追加した後であまり意味がありません。 – Evk

+1

@Evk yeap、私はちょうどそれらをコピーして、オプションのパラメータを削除するのを忘れました。 – SeM

+0

ありがとうございました –

関連する問題