我有一个函数想要将 2 个INT
参数发送回它被调用的位置,但不确定什么是最好的选择,a Dictionary
?或一个List
或一个Array
已编辑
我正在使用 .Net 框架 2
我有一个函数想要将 2 个INT
参数发送回它被调用的位置,但不确定什么是最好的选择,a Dictionary
?或一个List
或一个Array
已编辑
我正在使用 .Net 框架 2
我假设您的意思是向调用者返回 2 个值。如果是这样的话:
Tuple<T1, T2>
MyOperationResult
out
参数: http: //msdn.microsoft.com/en-us/library/t3c3bfhx (v=vs.80).aspx这取决于呼叫者最容易理解的内容,即最能证明您的意图的内容?
如果结果总是有两个值,则返回可变大小的集合可能不直观。我的偏好是元组或自定义类型。Tuple 具有作为现有类型的优点,但缺点是不清楚其成员的含义;它们只是被称为“Item1”、“Item2”等等。
该out
关键字适用于可能不会成功并始终返回布尔值的操作,例如public bool int.TryParse( string value, out int parsedValue )
. 这里的意图很明确。
尝试使用此代码
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)
您可以尝试使用 out 参数msdn
如果您只使用两个整数,那么我会使用 2 元组 a Tuple<int, int>
。
您可以在构造函数中使用它的两个值对其进行初始化:
return new Tuple<int,int>(val1, val2);
或者,对于可变数量的输出,a List<int>
(或者可能只是一个,IEnumerable<int>
取决于预期用途)。
我想我需要通过引用返回它,就像这样......
private void ReturnByRef(ref int i1, ref int i2) {
}
好吧,这取决于,你有多种方法可以做到这一点。如果您只想传回两个参数,那么您可以使用“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 ...
}
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