在JavaScript中,我可以在每个单元格中包含一个不同对象的数组,并且在枚举它时,每个单元格都将被当作是对象,而不是作为集合的基础公共对象。
可以说我有2个对象:
class car
{
public color;
...
}
class paint
{
public color;
...
}
是否有像这样的灌肠语法
car beemer;
paint panda;
...
foreach (thing in [beemer, panda])
{
thing.color = "red";
}
在C#中?
最佳答案
好吧,如果您确实需要,可以使用动态类型:
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
属性。关于c# - JS像C#中的枚举,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39365945/