繁体   English   中英

C#中的枚举 - 赋值

[英]enums in C# - assignment

如何在c#中做到这一点?

让我们说myclass有:

private enum Days{};


1)如何在构造函数的帮助下将数据添加到myclass中的枚举? 如:

myclass my = new myclass(Monday,Friday);

这样类中的枚举就会得到“星期一,星期五”的属性。


2)一旦初始化,是否还可以为类中的enume创建属性? 例如 :

my.Days = new enum Days(Tuesday); //where the old settings are replaced.

编辑:

我想做的是:

在主要课程中有一个枚举,如枚举天{星期一,星期二,星期三,星期四,星期五};

我也会在myclass(enum?)中有一些东西,这样我就可以将Days enum中的一些值分配给myclass internal(enum?),只有一些但不是所有的值枚举。

所以我可以得到一个myclass,其中包含一个带有“星期一,星期二”的(枚举?),而有些myclass222包含(枚举?)“星期五”等。

我不知道枚举是否是在myclass类中执行此操作的正确方法?

你的问题有些模糊,但是如果你实际上是在询问如何构造一个可以组合值的枚举,那么答案就是用Flags属性来装饰它:

[Flags]
public enum Days
{
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    Saturday = 32,
    Sunday = 64
}

现在,如果您有类型为Days成员,则可以为其分配组合值:

Days someDays = Days.Monday | Days.Wednesday;

更新
根据要求; 这里是如何检查是否设置了某个值:

bool wednesdayIsSet = (someDays & Days.Wednesday) == Days.Wednesday;

回答在另一个类中定义枚举时如何在一个类中创建枚举成员的问题,如下所示:

public class SomeClass
{
    [Flags]
    public enum Days
    {
        None = 0,
        Monday = 1,
        // and so on
    }
}

public class SomeOtherClass
{
    public SomeClass.Days SomeDays { get; set; }
}

1)你不能。 枚举必须在编译时定义

看起来你可能会寻找一个AttributeCollection。 (看看FredrikMörk的回答,这是我试图谈论的内容;))

2) my.Days = Days.Tuesday

无法从问题中分辨出来,但也许您打算这样的事情:

  1. 用日期定义枚举

    public enum Days {Sunday,Monday ,. }

  2. 在类中创建Days的列表属性

  3. 在需要时将所需天数添加到列表中

这似乎是我想要做的。 问题是,如果enum Days在我的“主类”中定义,我如何在另一个“myclass类”中拥有Days成员,以便我可以使用myclass.someDays = Days.Monday?

假设你的主类是mainClass而你提供了apt访问权限,那么取决于枚举的定义,即1.如果它是静态的那么myclass.someDays = mainClass.Days.Monday; 2.否则,你必须通过mainClass mainClass的对象访问它mc = new mainClass(); myclass.someDays = mc.Days.Monday;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM