C#:从另一个类访问Enum
我知道我可以将我的枚举放在类的Namespace区域,这样每个人都可以在同一名称空间中访问它。
// defined in class2 public enum Mode { Selected, New, }
我想要的是从中访问此枚举
public class1 { var class2 = new class2(); // Set the Mode class2.Mode = Model.Selected }
在不使用命名空间区域的情况下这是否可行?
如果您尝试执行下面描述的操作,它将无法正常工作……
public class MyClass1 { private enum Mode { New, Selected }; public Mode ModeProperty { get; set; } } public class MyClass2 { public MyClass2() { var myClass1 = new MyClass1(); //this will not work due to protection level myClass1.ModeProperty = MyClass1.Mode. } }
你可以做的是下面的,这将有效…
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; } }
您可以在类之外声明枚举:
namespace MyNamespace { public enum MyEnum { Entry1, Entry2, } }
然后你可以using MyNamespace;
添加using MyNamespace;
需要使用的地方。
是:
class2.Mode = class2.Mode.Selected
但请注意,您不能定义与外部类成员之一具有相同名称的嵌套类型,因此此代码将无法编译。 枚举或属性需要以其他名称命名。 您的类名和变量名也会发生冲突,使其更加复杂。
为了使这个更通用的答案,如果你有这个:
public class Foo { public SomeEnum SomeProperty { get; set; } public enum SomeEnum { Hello, World } }
然后,此代码将为属性分配枚举值:
Foo foo = new Foo(); foo.SomeProperty = Foo.SomeEnum.Hello;
Aaron的答案非常好,但我相信还有更好的方法:
public static class class1 { public void Run() { class2.Mode mode = class2.Mode.Selected; if (mode == class2.Mode.Selected) { // Do something crazy here... } } } public static class class2 { public enum Mode { Selected, New } }
没有必要使这复杂化。 这是一项简单的任务。
祝一切顺利
克里斯。
上述就是C#学习教程:C#:从另一个类访问Enum分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/958431.html