C#返回枚举和int数组

时间:2011-01-13 00:24:47

标签: c# enums

我正在做一些我需要返回枚举和一系列整数的东西。我可以绕过整个问题并使用int而不是枚举并将其添加为数组的第一个元素,但枚举确实有助于我的代码易读性。有没有办法同时返回两个?

1 个答案:

答案 0 :(得分:11)

这有三种常见的解决方案。 哪一个适合取决于具体情况和您的个人偏好:

  1. 对其中一个使用out参数。这不需要任何新类型,但是不方便打电话。此外,它可能不会在语义上捕获返回值之间的关系。

    public int[] MyMethod(out MyEnumType myEnum)
    { 
        myEnum = ...
        int[] nums = ...    
        return nums;
    }
    
  2. 使用Tuple<,>类型(.NET 4.0)。这只需要从现有的BCL类型构造一个封闭的泛型类型,但调用者可能不喜欢封装的属性具有无意义的名称这一事实:Item1Item2您还可以{{1输入或编写您自己的KeyValuePair<,>类型以达到类似目的。

    Pair<,>
  3. 编写一个封装int数组和枚举的包装类。更多的工作,但最适合打电话的人。

    public Tuple<int[], MyEnumType> MyMethod() 
    {
        int[] nums = ...
        MyEnumType myEnum = ...
        return Tuple.Create(nums, myEnum); 
    }