【发布时间】:2010-03-04 07:40:28
【问题描述】:
由于 C# 缺乏对独立函数的支持,我发现很难找到放置转换函数的地方。例如,我想将枚举转换为数字。在 C++ 中,我会为此创建以下独立函数:
UINT32 ConvertToUint32(const MyEnum e);
如何在 C# 中优雅地做到这一点?我是否应该创建一个虚拟静态类来保存该函数,如果是,我怎样才能为它找到一个有意义的名称?还是我应该做一个部分类转换?
有什么想法吗?
提前致谢。
更新:回想起来,我的示例选择得不是很好,因为 enum 和 int 之间存在默认转换。这是一个更好的例子:
Person ConvertToPerson(const SpecialPersonsEnum e);
【问题讨论】:
-
MyEnum e = (MyEnum)3;或 MyInt i = (Int)e;都是在 C# 中在 int 和 enum 之间进行转换的可接受方式。话虽如此,我总是将转换函数放在实用程序类中。
-
+1
partial class Convert是个好主意。 -
如果您想从枚举转换为 Person 类,请编写转换运算符。当你可以写一个你想要的操作符时,为什么还要乱用一个方法呢?
-
@Eric:这可以在 Person 类和 SpecialPersonsEnum 在第三方库中的一般情况下完成吗?
-
不幸的是,没有。转换运算符的代码必须放在被转换事物之一的声明中;在这种情况下,它必须是 Person 声明,因为您不能将代码放入枚举中。我们正在考虑一个功能“扩展转换”,它可以让你做你描述的事情;如果你有一个非常棒的场景,我很想听听。
标签: c# coding-style