Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#嵌套中枚举的替代方法_C#_Enums_Static_C# 6.0 - Fatal编程技术网

C#嵌套中枚举的替代方法

C#嵌套中枚举的替代方法,c#,enums,static,c#-6.0,C#,Enums,Static,C# 6.0,看到这篇有趣的文章: 如何使类中有嵌套类成为可能 假设每个角色有不同的状态:作者、编辑 作者:经验丰富的精英 编辑:批准,偶尔 我如何访问该值,如下所示: Role.Author.experied.Value Role.Editor.Approved.Value 谢谢,我不明白这个问题。如果想要嵌套类,请使用嵌套类。从您链接到的文章的设计开始,您将获得: public class Role { public static class Author { publi

看到这篇有趣的文章:

如何使类中有嵌套类成为可能

假设每个角色有不同的状态:作者、编辑

作者:经验丰富的精英

编辑:批准,偶尔

我如何访问该值,如下所示:

Role.Author.experied.Value

Role.Editor.Approved.Value


谢谢,我不明白这个问题。如果想要嵌套类,请使用嵌套类。从您链接到的文章的设计开始,您将获得:

public class Role
{
    public static class Author
    {
        public static Role Seasoned {get;} = new Role(0, "Seasoned author");
        public static Role Elite {get;} = new Role(1, "Elite author");
    }

    public static class Editor
    {
        public static Role Approved {get;} = new Role(2, "Approved editor");
        public static Role Occassional {get;} = new Role(3, "Occassional editor");
    }

    public string Name { get; private set; }
    public int Value { get; private set; }

    private Role(int val, string name) 
    {
        Value = val;
        Name = name;
    }

    public IEnumerable<Role> List()
    {
        return new[]{Author.Seasoned,Author.Elite,Editor.Approved,Editor.Occassional};
    }

    public Role FromString(string roleString)
    {
        return List().FirstOrDefault(r => String.Equals(r.Name, roleString, StringComparison.OrdinalIgnoreCase));
    }

    public Role FromValue(int value)
    {
        return List().FirstOrDefault(r => r.Value == value);
    }
}
公共类角色
{
公共静态类作者
{
公共静态角色经验丰富的{get;}=新角色(0,“经验丰富的作者”);
公共静态角色Elite{get;}=新角色(1,“Elite作者”);
}
公共静态类编辑器
{
公共静态角色已批准{get;}=新角色(2,“已批准的编辑器”);
公共静态角色occasional{get;}=新角色(3,“occasioneditor”);
}
公共字符串名称{get;private set;}
公共int值{get;private set;}
私有角色(int val,字符串名称)
{
值=val;
名称=名称;
}
公共IEnumerable列表()
{
返回新[]{作者。经验丰富的,作者。精英,编辑。批准,编辑。偶然};
}
来自字符串的公共角色(字符串角色列表)
{
return List();
}
公共角色FromValue(int值)
{
return List().FirstOrDefault(r=>r.Value==Value);
}
}

为什么不想使用Enum?为了编写自定义逻辑并为特定业务案例启用嵌套。每个角色都应该包含状态集合,我看不到其他方法。您要求的是一个普通类,它具有两个类似Enum的属性。就这样吧,没有什么好的理由将角色类腐蚀成枚举以外的其他类型。Fwiw、枚举类型的存在使代码快速且内存高效。这不是。