我正在做一些我需要返回枚举和一系列int的东西.我可以绕过整个问题并使用int而不是枚举并将其添加为数组的第一个元素,但枚举确实有助于我的代码易读性.有没有办法同时返回两个?
Ani*_*Ani 11
有3种常见的解决方案.哪一个适合取决于具体情况和您的个人偏好:
其中一个out参数使用参数.这不需要任何新类型,但是不方便打电话.此外,它可能不会在语义上捕获返回值之间的关系.
public int[] MyMethod(out MyEnumType myEnum)
{
myEnum = ...
int[] nums = ...
return nums;
}
Run Code Online (Sandbox Code Playgroud)使用Tuple<,>类型(.NET 4.0).这只需要从现有BCL型密闭通用型的建设,但来电者可能不喜欢的事实,封装属性有无意义的名称: Item1与Item2您还可以在KeyValuePair<,>类型或编写自己的Pair<,>类型服务于类似的目的.
public Tuple<int[], MyEnumType> MyMethod()
{
int[] nums = ...
MyEnumType myEnum = ...
return Tuple.Create(nums, myEnum);
}
Run Code Online (Sandbox Code Playgroud)编写一个封装int数组和枚举的包装类.更多的工作,但最好与呼叫者一起工作.
public class Wrapper
{
public int[] Nums { get { ... } }
public MyEnumType MyEnum { get { ... } }
}
...
public Wrapper MyMethod()
{
Wrapper wrapper = ...
return wrapper;
}
Run Code Online (Sandbox Code Playgroud)