我正在处理某些事情,我需要返回一个枚举和一个整数数组。我可以绕过整个问题,使用int而不是枚举,并将它作为数组的第一个元素添加,但枚举确实有助于我的代码易读性。有什么办法可以同时返回吗?C#返回一个枚举和一个int数组
2
A
回答
11
有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; }
+0
我想过使用包装类。不知道C#有元组,所以我想这是要走的路。你知道是否有任何性能影响坚持int使用元组? – user472875 2011-01-13 00:28:25
相关问题
- 1. C++:返回一个枚举
- 2. C++函数返回一个枚举?
- 3. 返回一个枚举
- 4. 铸造从int到枚举仍返回一个int
- 5. 创建一个枚举或枚举等价物,返回字符串(枚举返回int)在.NET中
- 6. 许多枚举在一个数组C#
- 7. (C#)枚举不会返回INT
- 8. C#枚举返回错误int值
- 9. 通过INT枚举并返回一个字符串
- 10. Java枚举返回Int
- 11. 搜索在枚举一个字符串,并返回枚举
- 12. 这个C代码如何返回一个枚举?
- 13. 返回一个int的引用与返回一个int在c + +函数?
- 14. 铸造一个int到枚举
- 15. 使用枚举作为一个int值
- 16. 枚举类型设置为一个int数组
- 17. 如何从C代码返回一个2D int数组到C#?
- 18. C#返回一个数组数组
- 19. int数组以旗枚举
- 20. 从函数获取二维数组,返回一个int C++
- 21. Postgresql C函数需要一个FLOAT8 []并返回一个INT []?
- 22. 红宝石:实现函数返回一个枚举
- 23. VB.Net枚举ToString返回一个未知的数字
- 24. JPA和一组枚举值
- 25. 从C++函数返回一个数组
- 26. 从C函数返回一个数组
- 27. C#枚举 - 猜旗给出一个int输入
- 28. 是否有可能在C++中创建一个int +枚举?
- 29. 如何编写一个方法,将枚举作为泛型并返回int值
- 30. 从函数C返回枚举#
答案给出了合理的选择,但我不能不认为有更大的设计问题在这里解决。你能描述一下这个方法在做什么,它返回一个可变的整数集合和一个枚举类型? – 2011-01-13 00:47:38