C# 返回一个枚举和一个 int 数组

标签 c# enums

我正在做一些需要返回枚举和整数数组的事情。我可以解决整个问题并使用 int 而不是枚举并将其添加为数组的第一个元素,但枚举确实有助于我的代码易读性。有什么办法可以同时返回吗?

最佳答案

对此有 3 种常见的解决方案。 哪种合适取决于具体情况和您的个人喜好:

  1. 使用out其中之一的参数。这不需要任何新类型,但调用起来不方便。此外,它可能无法从语义上捕捉返回值之间的关系。

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

    public Tuple<int[], MyEnumType> MyMethod() 
    {
        int[] nums = ...
        MyEnumType myEnum = ...
        return Tuple.Create(nums, myEnum); 
    }
    
  3. 编写一个包装器类,封装 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/

相关文章:

java - 如何在 Java 中计算枚举的哈希码,以及如何将枚举哈希码组合为 HashMap 的键

python - "Other"/Python 枚举上的默认名称行为

c# - 如何在 SQL Server 2005 中执行服务器端分页

c# - asp.net c# 中 session 变量范围的范围是什么?

c# - 带美国日期的 OrderBy Linq

javascript - 获取在 Repeater 控件 ASP.Net 中显示的单击项文本框

c# - 如何以编程方式从动态 JObject 中删除属性

c# - 通过泛型类中嵌套枚举的反射获取枚举值

java - 将 ENUM 类型分配给构造函数

c++ - 继承只是为了共享枚举 - 危险吗?