我正在做一些需要返回枚举和整数数组的事情。我可以解决整个问题并使用 int 而不是枚举并将其添加为数组的第一个元素,但枚举确实有助于我的代码易读性。有什么办法可以同时返回吗?
最佳答案
对此有 3 种常见的解决方案。 哪种合适取决于具体情况和您的个人喜好:
使用
out
其中之一的参数。这不需要任何新类型,但调用起来不方便。此外,它可能无法从语义上捕捉返回值之间的关系。public int[] MyMethod(out MyEnumType myEnum) { myEnum = ... int[] nums = ... return nums; }
使用
Tuple<,>
类型(.NET 4.0)。这只需要从现有 BCL 类型构造一个封闭的泛型类型,但调用者可能不喜欢封装属性具有无意义名称这一事实:Item1
和Item2
您也可以KeyValuePair<,>
输入或编写您自己的Pair<,>
键入服务于类似的目的。public Tuple<int[], MyEnumType> MyMethod() { int[] nums = ... MyEnumType myEnum = ... return Tuple.Create(nums, myEnum); }
编写一个包装器类,封装 int 数组和枚举。更多工作,但最好与调用者一起工作。
public class Wrapper { public int[] Nums { get { ... } } public MyEnumType MyEnum { get { ... } } } ... public Wrapper MyMethod() { Wrapper wrapper = ... return wrapper; }
关于C# 返回一个枚举和一个 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4675562/