我正在做一些我需要返回枚举和一系列整数的东西。我可以绕过整个问题并使用int而不是枚举并将其添加为数组的第一个元素,但枚举确实有助于我的代码易读性。有没有办法同时返回两个?
答案 0 :(得分:11)
这有三种常见的解决方案。 哪一个适合取决于具体情况和您的个人偏好:
对其中一个使用out
参数。这不需要任何新类型,但是不方便打电话。此外,它可能不会在语义上捕获返回值之间的关系。
public int[] MyMethod(out MyEnumType myEnum)
{
myEnum = ...
int[] nums = ...
return nums;
}
使用Tuple<,>
类型(.NET 4.0)。这只需要从现有的BCL类型构造一个封闭的泛型类型,但调用者可能不喜欢封装的属性具有无意义的名称这一事实:Item1
和Item2
您还可以{{1输入或编写您自己的KeyValuePair<,>
类型以达到类似目的。
Pair<,>
编写一个封装int数组和枚举的包装类。更多的工作,但最适合打电话的人。
public Tuple<int[], MyEnumType> MyMethod()
{
int[] nums = ...
MyEnumType myEnum = ...
return Tuple.Create(nums, myEnum);
}