在JavaScript中,我可以在每个单元格中拥有一组不同的对象,在枚举时,每个单元格都将被视为对象,而不是作为集合的底层公共对象。
假设我有两个对象:
class car
{
public color;
...
}
class paint
{
public color;
...
}
是否存在类似
的语法car beemer;
paint panda;
...
foreach (thing in [beemer, panda])
{
thing.color = "red";
}
在c#中?
答案 0 :(得分:5)
嗯,如果你真的想要,你可以使用动态类型:
public class Paint
{
public string Color { get; set; }
}
public class Car
{
public string Color { get; set; }
}
...
var objects = new object[]
{
new Car { Color = "Red" },
new Panda { Color = "Black" }
};
foreach (dynamic value in objects)
{
Console.WriteLine(value.Color);
}
但是使用你想要的属性声明一个接口会更常规,然后让所有相关类型实现接口:
public interface IColored
{
string Color { get; set; }
}
public class Paint : IColored
{
public string Color { get; set; }
}
public class Car : IColored
{
public string Color { get; set; }
}
...
var objects = new IColored[]
{
new Car { Color = "Red" },
new Panda { Color = "Black" }
};
foreach (IColored value in objects)
{
Console.WriteLine(value.Color);
}
这是:
Color
属性。答案 1 :(得分:3)
如果使用界面上定义的颜色属性实现接口就能实现此目的。
public interface IHasColor
{
string color { get; set; }
}
public class car : IHasColor
{
public color { get; set; }
...
}
foreach (IHasColor thing in new IHasColor[] { beemer, panda })
{
thing.color = "red";
}