2017-09-12 15 views
1

'名前付き引数'機能をパラメータとして使用します。'名前付き引数'を使用したオーバーロードされたメソッドの選択

2つの方法があります。

Class temp { 
    public method(Class1 param); 
    public method(Class2 param); 
}; 

上記のクラスの場合、「名前付き引数」を使用してメソッドを呼び出す場合。私はmethod(param: 'some value');のように呼び出すことができますし、私は「いくつかの価値」にnullを与えたいと思うので、私はこのようにしようとすると、

method(param:null); 

私はこのメッセージ

は、呼び出しは、次の方法の間であいまいで参照しますか、プロパティ: 'メソッド'と 'メソッド'

次に、私はこれらの2つ(Class1、Class2)が非常に似ていることを実現しました。

だから私はこのようにそれをキャストしようとすると、

method((Class1)param:null); 

私は以下のようなメッセージで失敗しました。

名 'identifier' が現在のコンテキスト

だから、 'キャスト' することができ、この 'のparam' パラメータには存在しないのですか?

ありがとうございます。

+0

  • 法1(のClass1のparam)

  • 方法2(クラス2のparam)

ORのようなものこれらの識別子を整理する? 3、2、1で同じことを言っている10の回答を準備してください。 –

+0

@JeroenMostert Guilty ... – ediblecode

+0

@JeroenMostertああそうです。私は次回を見つけようとします。ありがとうございます:) – hyunsooPark

答えて

1

あなたはこのようにそれを実行します。

MethodName(param: (Class1)null) 

基本的には、パラメータ

+0

ありがとうございました:)私はそれを得ました! – hyunsooPark

0

はなぜ2つのメソッドを区切るない、自分の与えられた型にnullをキャストする必要はありませんか?あなたは、文字通り唯一の他の選択肢何をしようとしなかった

public method<T>(T param) 
{ 
    if(param.GetType() == typeof(Class1)) 
    { 
     //Do stuff for Class1 
     Console.WriteLine("Class1"); 
    } 
    else if (param.GetType() == typeof(Class2)) 
    { 
     //Do stuff for Class2 
     Console.WriteLine("Class2"); 
    } 
} 
+0

私はこのクラスについてユニットテストをしています。私が望むのは、特定のメソッドの入力値に '名前付き引数'を使用することです。そして、このクラスは私のものではありません。だから私はなぜこれらの2つが分離されているのか分からない..あなたのコメントをありがとう。 – hyunsooPark

+0

これはジェネリックの恐ろしい使用です – ediblecode

関連する問題