我想存储一个对象列表,比如Car类型,但是带有一个额外的'tag'属性,例如一个不属于Car类的布尔值True / False。完成此任务的最佳方法是什么?我需要在方法之间传递结果。
答案 0 :(得分:2)
您可以使用某种元组,例如Pair<T,U>
。
以下是一个例子:
namespace TestProject.Utils
{
public class Pair<T, U>
{
public Pair(T first, U second)
{
this.First = first;
this.Second = second;
}
public T First { get; set; }
public U Second { get; set; }
}
}
对于C#4,这里有一个关于元组的好读物:CLR Inside Out - Building Tuple
编辑:用法
Car mustang;
List<Pair<Car, bool>> list = new List<Pair<Car, bool>>(); // <Car, isAwesome> pairs..
list.Add(new Pair(mustang, true));
答案 1 :(得分:0)
Dictionary<Car, bool> carFlags = new Dictionary<Car, bool>();
您可以将汽车传入字典并取回布尔旗。
答案 2 :(得分:0)
使用继承,您可以创建一个CarWithTag类来扩展Car类,而不会使用不需要的属性来污染Car类:
public class Car
{
public string CarInfoEtcetera { get; set; }
}
public class CarWithTag : Car
{
public string Tag { get; set; }
}
然后,当您需要传递标记信息时,您可以创建一个接受CarWithTag对象的方法。
private string GetCarTagInfo(CarWithTag car)
{
return car.Tag;
}
现在你可以新建一个CarWithTag对象并将其传递给方法,以及任何Car信息。
CarWithTag carWithTag = new CarWithTag()
{
Tag = "123abc",
CarInfoEtcetera = "etc"
};
string tag = GetCarTagInfo(carWithTag);