【问题标题】:c# passing Parameters values from function to other functionc#将参数值从函数传递到其他函数
【发布时间】:2016-08-28 10:34:55
【问题描述】:

有没有办法从“functionone”中的参数获取值并在“functiontwo”中计算它而无需再次编写这是一个小代码,例如我的意思

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);


}

【问题讨论】:

  • 不,你必须明确地调用它。
  • 不,你应该从functionOne调用functiontwo并传递参数。
  • @NeerajSharma 我怎么称呼它?
  • functiontwo(x,y),将值设置为全局。作为回答中提到的之一

标签: c# function parameters parameter-passing


【解决方案1】:

我猜你错误地实现了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);
}

}

【讨论】:

  • 注意:可以使用ref关键字来传递变量,所以方法调用后会保留值。 functionone 应该让变量为它们设置 1 和 2,你传递的是 x 的值,而不是变量。
【解决方案2】:

解释一下我的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'

通过这种方式,您可以设置传递给functiononefunctiontwo 的任何变量的值。

但是它看起来不太好,在我看来它不是一个好的代码。您的概念似乎错误,所以也许您可以发布您遇到的问题的描述?

【讨论】:

    猜你喜欢
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2014-06-04
    • 2013-10-05
    相关资源
    最近更新 更多