我有一个函数想要将2个INT
参数发送回调用它的位置,但不确定哪个是最佳选项,Dictionary
?或List
或Array
EDITED
我正在使用.Net framework 2
答案 0 :(得分:6)
我假设你的意思是给调用者返回2个值。如果是这样的话:
Tuple<T1, T2>
MyOperationResult
out
参数:http://msdn.microsoft.com/en-us/library/t3c3bfhx(v=vs.80).aspx 这取决于呼叫者最容易理解的内容,即最能说明您意图的内容?
如果结果始终有两个值,则返回可变大小的集合可能不直观。我的偏好是元组或自定义类型。元组具有现有类型的优点,但缺点是它的成员意味着什么;它们只被称为“Item1”,“Item2”,依此类推。
out
关键字对于可能无法成功且始终返回bool的操作很有用,例如public bool int.TryParse( string value, out int parsedValue )
。意图很明确。
答案 1 :(得分: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)
答案 2 :(得分:2)
您可以尝试使用参数msdn
答案 3 :(得分:2)
如果你只使用两个整数,那么我会使用一个2元组,一个Tuple<int, int>
。
您可以在构造函数中使用其两个值初始化它:
return new Tuple<int,int>(val1, val2);
或者对于可变数量的输出,List<int>
(或者可能只是IEnumerable<int>
,具体取决于预期用途。)
答案 4 :(得分:2)
我想我需要通过引用返回它,就像这样......
private void ReturnByRef(ref int i1, ref int i2) {
}
答案 5 :(得分: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 ...
}
答案 6 :(得分: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