由于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一起使用,但是对于其他转换,它们很容易实现。在这里看看:
  • http://www.pluralsight.com/community/blogs/fritz/archive/2005/12/09/17343.aspx
  • 关于c# - 转换函数放在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2377571/

    10-10 21:41
    查看更多