如何访问在另一个类中声明的枚举 - C#

4

我有以下代码:

class EmployeeFactory
{
        public enum EmployeeType
        {
                ManagerType,
                ProgrammerType,
                DBAType
        }
}

我希望在MAIN类(Program)中访问这个枚举。我已经编写了以下代码。它可以工作。但是我想知道如何在不实例化类的情况下访问ENUM,这意味着ENUM就像一个静态变量(类级别变量)?有什么帮助吗?

class Program
{
        static void Main(string[] args)
        {
                Console.WriteLine(EmployeeFactory.EmployeeType.ProgrammerType);  // WORKS WELL
        }
}

还是我需要这样写?

EmployeeFactory ef = new EmployeeFactory();
ef.EmployeeType.ProgrammerType

有什么问题吗?你可以像你在问题中那样引用枚举。还有其他你想要做的事情吗? - drdwilcox
你能澄清一下你的问题吗?你说你的 Console.WriteLine() 代码可以工作。但是那段代码并没有实例化你的类。问题出在哪里? - Nathanial Woolls
1
你自己回答了这个问题。 - Gabe
3个回答

5

您可以直接使用该类来访问它。

EmployeeFactory.EmployeeType.ProgrammerType

枚举是类的一部分,而不是类实例的一部分。


这是类似于“STATIC”变量的东西,所以我可以放置<ClassName>.<MemberName>吗?它属于类而不是对象? - user1054625
如果我理解你的意思正确,那么是的,那是正确的。枚举类型属于类而不是类的实例。 - N_A
枚举是类的一部分,而不是类实例的一部分 - 这正是我所需要的。 - user1054625

1
我想知道如何在不实例化类的情况下访问ENUM。 你原来的访问方式是:

Console.WriteLine(EmployeeFactory.EmployeeType.ProgrammerType);

已经实现了这一点;您正在访问枚举而不实例化类。


-2
尝试像这样做...
    public interface IEnums
    {
        public enum Mode { New, Selected };
    }

    public class MyClass1
    {
        public IEnums.Mode ModeProperty { get; set; }
    }

    public class MyClass2
    {
        public MyClass2()
        {
            var myClass1 = new MyClass1();

            //this will work
            myClass1.ModeProperty = IEnums.Mode.New;
        }
    }

或者你可以直接像这样访问...

 EmployeeFactory.EmployeeType.ProgrammerType 

希望这能对你有所帮助


看起来你把这个从 https://dev59.com/BG855IYBdhLWcg3wQyDh#4444048 复制过来了。而且,这个对我来说好像不起作用,我得到了一个“接口不能声明类型”的错误。 - Lawyerson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接