0

我有一个函数想要将 2 个INT参数发送回它被调用的位置,但不确定什么是最好的选择,a Dictionary?或一个List或一个Array

已编辑

我正在使用 .Net 框架 2

4

7 回答 7

6

我假设您的意思是向调用者返回 2 个值。如果是这样的话:

这取决于呼叫者最容易理解的内容,即最能证明您的意图的内容?

如果结果总是有两个值,则返回可变大小的集合可能不直观。我的偏好是元组或自定义类型。Tuple 具有作为现有类型的优点,但缺点是不清楚其成员的含义;它们只是被称为“Item1”、“Item2”等等。

out关键字适用于可能不会成功并始终返回布尔值的操作,例如public bool int.TryParse( string value, out int parsedValue ). 这里的意图很明确。

于 2012-07-31T09:57:30.127 回答
2

尝试使用此代码

type1 param1;
type2 param2;
void Send(out type1 param1, out type2 param2)

or

type1 param1 = ..;//You must initialize with ref
type2 param2 = ..;
void Send(ref type1 param1, ref type2 param2)
于 2012-07-31T09:57:37.387 回答
2

您可以尝试使用 out 参数msdn

于 2012-07-31T09:57:54.580 回答
2

如果您只使用两个整数,那么我会使用 2 元组 a Tuple<int, int>

您可以在构造函数中使用它的两个值对其进行初始化:

return new Tuple<int,int>(val1, val2);

或者,对于可变数量的输出,a List<int>(或者可能只是一个,IEnumerable<int>取决于预期用途)。

于 2012-07-31T09:58:10.193 回答
2

我想我需要通过引用返回它,就像这样......

private void ReturnByRef(ref int i1, ref int i2) {

}
于 2012-07-31T09:58:50.307 回答
1

好吧,这取决于,你有多种方法可以做到这一点。如果您只想传回两个参数,那么您可以使用“out”参数:

class A
{
  private static void foo(int param, out int res1, out int res2)
  {
    res1 = 1*param;
    res2 = 2*param;
  }

  public static void main(string[] args)
  {
    int res1, res2;
    foo(1, out res1, out res2);
    // Do something with your results ...
  }
于 2012-07-31T10:05:32.073 回答
1

out 参数效果最好

static void Main()
{
   int a;
   int b;
   someFunction(out a,out b); //the int values will be returned in a and b
   Console.WriteLine(a);
   Console.WriteLine(b);
}
public static void someFunction(out int x,out int y)
{
   x=10;
   y=20;
 }

你的输出将是

10
20
于 2012-07-31T11:32:54.523 回答