2016-06-13 7 views
0

私は、メソッドを "継承"させ、パラメータリストを2番目のメソッドにもう一度渡すのではなく、それらのメソッドを使用できるようにする方法があれば疑問に思っていました。ここでは、それはおそらく仕事だろう方法は次のとおりです。メソッド他のメソッドのパラメータを継承する

void Method1(string p1, int p2, bool p3) 
{ 
    string result = Method2(p1,p2,p3); 
} 
string Method2():Method1() 
{ 
    if(p3) 
    { 
     return p1 + p2.ToString(); 
    } 
    else 
    { 
     return null; 
    } 

} 

代わりの

void Method1(string p1, int p2, bool p3) 
{ 
    string result = Method2(p1,p2,p3); 
} 
string Method2(string p1, int p2, bool p3) 
{ 
    if(p3) 
    { 
     return p1 + p2.ToString(); 
    } 
    else 
    { 
     return null; 
    } 
} 

それは実際にどんな意味があるかどうかわからないが、私はそれが可能だ場合は興味があります。そうでない場合は、これらのパラメータをMethod2()に書き換えないようにするための回避策がありますか?

+0

これを見てください。あなたが今より良く説明しようとしている場合は、これを達成しようとしているものです。http://stackoverflow.com/questions/13536993/constructor-parameters-and-inheritance – MethodMan

+3

あなたの例はありませんなぜこれが理にかなっているかについての正当な理由を提供する。 Method1が存在する明らかな理由はありません。 また、答えはいいえ、不可能です。 – CSharpie

答えて

1

いいえ、そのようなコンストラクトは存在せず、そこにあってもメソッドのパラメータを継承することは意味をなさないでしょう。最大では、第2の方法では、あなたは

void Method1(string p1, int p2, bool p3) 
{ 
    string result = Method2(p1,p2,p3); 
} 

string Method2(string p1 = null, int p2 = 10, bool p3 = false) 
{ 
0

いいえ、あなたはパラメータを継承することはできませんと言って、それらのオプションパラメータを作ることができます。同じシグネチャを持つメソッドが多く、同じパラメータセットを渡すという問題はありますか?変更を加えたときにそれらをすべて維持する必要はありませんか?
複数の値の「エンティティ」がある場合は、通常はクラスを作成する場合があります。

public class WhateverTheseParametersAre 
{ 
    public string P1 {get;set;} 
    public string P2 {get;set;} 
    public bool P3 {get;set;} 
} 

これにより、省略可能な/省略可能なパラメータも不要になります。

+0

ええ、私はこれらの変数をクラス/タプルにラップするのが最も理にかなっていると思います。実際に私は実際の問題よりもむしろcuriocityから質問しました。 Reflectionとparams []キーワードで何かを達成しようとしていましたが、とにかく効果がないでしょう – Wojtek

関連する問題