作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有两个非常相似但不完全相同的 C# 对象。我正在将值从一个类复制到另一个类。
每个类都有一些公开枚举类型的属性。枚举的内部是相同的,但名称不同,例如
public enum EnumA
{
A,
B
}
public EnumA EnumAProperty
{
get{ return enumA;}
}
public enum EnumB
{
A,
B
}
public EnumB EnumBProperty
{
get{ return enumB;}
}
我想将从 EnumBProperty 返回的值分配给 EnumAProperty 这可能吗?
最佳答案
你可以通过转换来完成,但我不推荐它,因为它很脆弱——如果任何枚举成员被重新排序或添加新项目,结果可能不是你所期望的。
EnumAProperty = (EnumA) EnumBProperty;
更糟糕的是,如果您的源枚举中有项目而目标中没有对应项 — 下面的颜色多于形状:
enum Color { Red = 0, Yellow = 1, Blue = 2 };
enum Shape ( Square = 0, Triangle = 1 };
Color color = Color.Red;
Shape shape = (Shape) color;
shape
可能以值 2
结束,即使此值未定义也是如此。
相反,我建议您使用 switch
语句来映射:
EnumAProperty = ConvertToA(EnumBProperty);
...
private static EnumA ConvertToA(EnumBProperty b)
{
switch (b)
{
case EnumB.Flannel: return EnumA.HandTowel;
case EnemB.Vest: return EnumA.UnderShirt;
...
default: throw new ArgumentOutOfRangeException("b");
}
}
关于C# 将枚举从一个对象复制到另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7028295/
我是一名优秀的程序员,十分优秀!