2016-08-28 4 views
0

"functionone"のパラメータから値を取得し、それをもう一度書くことなく "functiontwo"で計算する方法はありますか?c#passing関数のパラメータ値を他の関数に

あなたが誤ってfunctiononeを実装している
public void functionone(int x, int y) 
{ 

    x = 1; 
    y = 2; 

} 

public void functiontwo(int a , int b) 
{ 
    a=x+y; 
    b=x-y; 

    Console.WriteLine(a); 
    Console.WriteLine(b); 


} 
+0

いいえ、明示的に呼び出す必要があります。 – zerkms

+0

いいえ、functionOneからfunctiontwoを呼び出し、パラメータを渡す必要があります。 –

+0

@NeerajSharmaどうしたらいいですか? – shar

答えて

0

私は はこれをやって推測: 公共ボイドfunctionone(int型のx、int型のy)は { のx = 1; y = 2; } は通常、パラメータを渡してメソッドの値を変更する方法ではありません。 または別の方法で言うと、xとyはパラメータとして渡す値を保持し、メソッド内には割り当てません。

例..

は、グローバルxとyのグローバルを定義し、その後、あなたはそのスコープにどこにでもそれにアクセスすることができます。

class Abc{ 
    int globalX; 
    int globalY; 
.... 
public void functionone(int x, int y) 
{ 
    globalX = 1 + x; 
    globalY = 2 + y; 
} 

public void functiontwo(int a , int b) 
{ 
    a=globalX + globalY; 
    b=globalX - globalY; 

    Console.WriteLine(a); 
    Console.WriteLine(b); 
} 

} 
+0

の注釈の1つとして注意: 'ref'キーワードを使って変数を渡すことができるので、値はメソッド呼び出し後も保持されます。 'functionone'はそれらに1と2を設定する変数を得なければなりません。あなたは変数ではなくxの値を渡しています。 – rsqLVo

0

は説明するために私のcomment

int globalX; 
int globalY; 

public void functionone(ref int x, ref int y) 
{ 
    x = 1; 
    y = 2; 
} 

public void functiontwo(ref int a , ref int b) 
{ 
    a = globalX + globalY; 
    b = globalX - globalY; 

    Console.WriteLine(a); 
    Console.WriteLine(b); 
} 


// in main 

functionone(ref globalX, ref globalY); 
// globalX and globalY are now 1 and 2 

functiontwo(ref a, ref b); 
// a = 3 and b = -1 -> 'globalX +/- globalY' 

このようにして、渡す変数の値をfunctiononeまたはfunctiontwoに設定できます。

しかし、それはよく見えず、私の意見では良いコードではありません。あなたのコンセプトは間違っているようですので、遭遇した問題の説明を投稿できますか?

関連する問題