支持来自C#中多个定义的枚举arg

时间:2018-05-09 08:52:50

标签: c#

我在伪代码中有一个带有单个枚举定义的代码:

using System;

class Program
{
    enum PetType
    {
        None,
        Cat = 1,
        Dog = 2
    }
}

class something..
{
    public PetType eF {set; get;}
}   

static void Main()
{
    somthing.eF = PetType.Cat;
}

现在我有一个新的枚举,我希望eF能够接收它:

using System;

class Program
{
    enum PetType
    {
        None,
        Cat = 1,
        Dog = 2
    }

    enum SizeType
    {
        None,
        Big = 1,
        Small = 2
    }
}

class something..
{
    public PetType eF {set; get;} //what do I do here? chage the tyoe to enum? and then what??
}   

static void Main()
{
    somthing.eF = PetType.Cat;
    somthing.eF = SizeType.Big;
}

我如何处理eF,以便它可以与两个枚举一起使用? 如果问题愚蠢我很抱歉,但我能找到任何我能理解的答案。

感谢,

2 个答案:

答案 0 :(得分:2)

你不能,也不应该。

枚举由int支持。如果能够分配两个值为1的枚举,则其值为2

只需为两个枚举类型创建两个属性。或者更好的是,使用继承添加为特定的派生类添加额外的属性。

答案 1 :(得分:1)

正如Patrick已经说过的那样,你不应该将两种不同的东西混合在一起,这是行不通的。

可以扩展您的PetType并删除SizeType,例如BigCatSmallCatBigDog,{{ 1}}。但如果你班上有两个属性,那就更好了。

考虑SmallDog应该是一个类而不是一个枚举,因为它可以具有类似PetType的属性,并且您在一个属性中有两个信息。或者将SizeTypeSize添加到班级PetType。例如,您的枚举和类可能如下所示:

Pet

现在你可以用这种方式创造一只肥胖的大猫:

enum Pets
{
    None,
    Cat = 1,
    Dog = 2
}

enum Sizes
{
    None,
    Big = 1,
    Small = 2
}

class PetType
{
    public PetType(Pets type)
    {
        Type = type;
    }

    public Pets Type { get; set; } = Pets.None;
}

class Pet
{
    public Pet(PetType type, Sizes size)
    {
        Type = type;
        Size = size;
    }
    public PetType Type { set; get; }
    public Sizes Size { set; get; } = Sizes.None;
}

class SomeClass
{
    public Pet ThePet { get; set; }
}