Csharp/C#教程:C#:从另一个类访问Enum分享


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

(0)
上一篇 2021年11月22日
下一篇 2021年11月22日

精彩推荐