由于C#缺乏对独立功能的支持,因此我发现很难找到放置转换功能的地方。例如,我想将一个枚举转换为数字。在C++中,我将为此提供以下独立功能:
UINT32 ConvertToUint32(const MyEnum e);
如何在C#中优雅地做到这一点?我是否应该创建一个虚拟的静态类来保存该函数,如果是的话,如何为它找到一个有意义的名称?还是应该让局部类转换?
有任何想法吗?
提前致谢。
更新:回想一下,我的示例选择不佳,因为enum和int之间存在默认转换。这将是一个更好的示例:
Person ConvertToPerson(const SpecialPersonsEnum e);
最佳答案
我会去:
namespace ExtensionMethods
{
public static class MyExtensions
{
public static int ConvertToInt(this MyEnum e)
{
var m;
// ... Implementation
return m;
}
}
}
然后,您只需要使用
MyEnum.ConvertToInt();
就可以在同一个类中进行多次转换。扩展方法简而言之,该死的性感。另外,Eric's关于类型转换器的评论让我谷歌搜索。非常棒,但是我不确定如何将它们与
Enum
一起使用,但是对于其他转换,它们很容易实现。在这里看看:关于c# - 转换函数放在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2377571/