我有一个用户控件,其中包含一个类型为MyItem的项目集合,其外观如下:
public class MyItem
{
// some other members
public object Tag { get; set; }
}
我有许多类型的项目在集合中,当它们被点击时,我需要知道哪个被点击了,以便根据情况采取行动。
例如:
如果我有5个项目,如Type1、Type2、Type3、Type4和Type5,那么为了检查项目单击事件,我创建了一个枚举如下:
private enum MyTypeEnum
{
Type1,
Type2,
Type3,
Type4,
Type5
}
将此内容放入
MyItem
的Tag
属性中,如下所示:MyItem m1 = new MyItem { Tag = MyTypeEnum.Type1 };
MyItem m2 = new MyItem { Tag = MyTypeEnum.Type2 };
MyItem m3 = new MyItem { Tag = MyTypeEnum.Type3 };
MyItem m4 = new MyItem { Tag = MyTypeEnum.Type4 };
MyItem m5 = new MyItem { Tag = MyTypeEnum.Type5 };
而在项目点击事件中,我会像这样检索它:
MyTypeEnum tag = (MyTypeEnum )item.Tag;
我知道当我将MyTypeEnum放入标签中时,我正在进行装箱操作,而在单击事件中检索它时,我正在进行拆箱操作。
我可以通过将string type
放入标记中来避免这种情况。
我的问题是,就性能或架构(更好的做事方式)而言,哪个更好,enum
还是string
?
MyTypeEnum
的Tag
? - Rohit Vats