gpt4 book ai didi

C# 将枚举从一个对象复制到另一个对象

转载 作者:太空狗 更新时间:2023-10-29 22:34:02 27 4
gpt4 key购买 nike

我有两个非常相似但不完全相同的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com