[英]C#: Access Enum from another class
我知道我可以将枚举放在类的命名空间区域,这样每个人都可以在同一个命名空间中访问它。
// defined in class2
public enum Mode { Selected, New, }
我想要的是从
public class1
{
var class2 = new class2();
// Set the Mode
class2.Mode = Model.Selected
}
如果不使用命名空间区域,这以某种方式可能吗?
您可以在类之外声明一个枚举:
namespace MyNamespace
{
public enum MyEnum
{
Entry1,
Entry2,
}
}
然后你可以using MyNamespace;
添加using MyNamespace;
需要用到的地方。
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
}
}
没有必要把这复杂化。 这是一项简单的任务。
祝一切顺利
克里斯。
是:
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;
如果您尝试执行下面描述的操作,它将无法正常工作...
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;
}
}
我最终通过将其更改为使用 Intellisense 找到的命名空间访问器来解决我的问题。 我认为枚举在类中,而不仅仅是命名空间。 如果它在课堂上,我会建议将其移出课堂。
namespace ABC.XYZ.Contracts
{
public class ChangeOrder : BaseEntity, IAuditable
{
...
}
public enum ContractorSignatureType
{
A,
B,
V
}
}
ContractorSignatureType = Contracts.ContractorSignatureType.B,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace @enum
{
class temp
{
public enum names
{
mohitt,
keval,
Harshal,
nikk
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine((int)temp.names.nikk);
Console.ReadKey();
}
}
}
//by using this you can access the value of enum.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace @enum
{
class temp
{
public enum names
{
mohitt,
keval,
Harshal,
nikk
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(temp.names.nikk);
Console.ReadKey();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.