我在伪代码中有一个带有单个枚举定义的代码:
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,以便它可以与两个枚举一起使用? 如果问题愚蠢我很抱歉,但我能找到任何我能理解的答案。
感谢,
答案 0 :(得分:2)
你不能,也不应该。
枚举由int
支持。如果能够分配两个值为1
的枚举,则其值为2
。
只需为两个枚举类型创建两个属性。或者更好的是,使用继承添加为特定的派生类添加额外的属性。
答案 1 :(得分:1)
正如Patrick已经说过的那样,你不应该将两种不同的东西混合在一起,这是行不通的。
您可以扩展您的PetType
并删除SizeType
,例如BigCat
,SmallCat
,BigDog
,{{ 1}}。但如果你班上有两个属性,那就更好了。
考虑SmallDog
应该是一个类而不是一个枚举,因为它可以具有类似PetType
的属性,并且您在一个属性中有两个信息。或者将SizeType
和Size
添加到班级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; }
}