访问列表< object []的数组元素>在foreach循环中 [英] Accessing array elements of a List<object[]> in foreach loop
问题描述
List< object []> markers = new List< object []>();
object [] marker = new object [2];
marker [0] = new Vector2(1,2);
marker [1] = new Vector4(1,2,3,4);
markers.Add(marker);
foreach(标记中的var项)
{
int x =(Vector2)item [0] .X; //错误:'object'不包含定义
//对于'X'和没有扩展方法'X'接受
//类型'object'的第一个参数可能是
// found(你是否缺少using指令或
//一个程序集引用?)
//其他的东西
}
有没有办法使这个工作,而不会丢失代码的可读性,或者我应该尝试使用类而不是对象数组? =h2_lin>解决方案
我决定和Tuple一起去。感谢那个后来删除了他的答案的海报。勇敢的事迹将被记住。 它可以工作,但是我还没有测试过CPU的效率,证明比其他解决方案慢,我会考虑使用它们。 This is what I have: Is there a way to make this work without losing code readability, or should I try using a class instead of object array? I decided to go with Tuple. Thanks for the idea to the poster who later removed his answer. Your deeds of valor will be remembered. Edit: had to change Result: It works, but I still haven't tested for CPU efficiency, if this proves to be slower than other proposed solutions, I will consider using them instead. 这篇关于访问列表< object []的数组元素>在foreach循环中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
$ b $编辑:不得不改变 Vector4
到颜色
$ //声明
List< Tuple< Vector2,Color>> marker = new List< Tuple< Vector2,Color>>();
//添加项目
Tuple< Vector2,Color> (
new Vector2(x,y),Color.FromNonPremultiplied(250,200,150,100));标记=新的元组Vector(Vector2,Color)
markers.Add(marker);
//检索项值
foreach(标记中的var项)
{
int x = item.Item1.X;
int y = item.Item1.Y;
颜色mycolor = item.Item2;
List<object[]> markers = new List<object[]>();
object[] marker = new object[2];
marker[0] = new Vector2(1, 2);
marker[1] = new Vector4(1, 2, 3, 4);
markers.Add(marker);
foreach (var item in markers)
{
int x = (Vector2)item[0].X; // Error: 'object' does not contain a definition
// for 'X' and no extension method 'X' accepting
// a first argument of type 'object' could be
// found (are you missing a using directive or
// an assembly reference?)
// other stuff
}
Vector4
to Color
(alpha channel was always 255).// declaration
List<Tuple<Vector2, Color>> markers = new List<Tuple<Vector2, Color>>();
// adding items
Tuple<Vector2, Color> marker = new Tuple<Vector2, Color>(
new Vector2(x, y), Color.FromNonPremultiplied(250, 200, 150, 100));
markers.Add(marker);
// retrieving item values
foreach (var item in markers)
{
int x = item.Item1.X;
int y = item.Item1.Y;
Color mycolor = item.Item2;
}