我刚刚在C#做过一些事情,我想知道如何做这样的事情。
Array[0] =
Array['Value'] = 2344;
Array['LocationX'] = 0;
Array['LocationY'] = 0;
Array[1] =
Array['Value'] = 2312;
Array['LocationX'] = 2;
Array['LocationY'] = 1;
Array[2] =
Array['Value'] = 2334;
Array['LocationX'] = 4;
Array['LocationY'] = 3;
它本身并不重要的数据,就是我知道如何在PHP中执行此操作。但是在C#中我没有,而且我已经尝试了一些方法而且没有运气。
在PHP中我可以做这样的事情:
$Array[0]->Value = 2344;
$Array[0]->LocationX = 0;
$Array[0]->LocationY = 0;
这些值将被添加到数组中。
在C#中,我尝试过这种方式,并没有这样做。
有人可以告诉我如何在C#中执行此操作吗?
感谢。
答案 0 :(得分:5)
编写一个类或结构来保存Value,LocationX和LocationY。
struct Foo
{
Foo(value, x, y)
{
Value = value;
LocationX = x;
LocationY = y;
}
Foo() {}
int Value;
int LocationX;
int LocationY;
}
Foo[] f = new []
{
new Foo(1, 2, 3),
new Foo(2, 3, 4)
}
或以这种方式初始化数组:
Foo[] f = new []
{
new Foo() { Value = 1, LocationX = 2, LocationY = 3 },
new Foo() { Value = 4, LocationX = 5, LocationY = 6 },
}
或使用Dictionary<string, int>
的数组。
Dictionary<string, int>[] array = new []
{
new Dictionary<string, int>() {{ "Value", 1 }, {"LocationX", 2}, {"LocationY", 3 }},
new Dictionary<string, int>() {{ "Value", 4 }, {"LocationX", 5}, {"LocationY", 6 }}
}
仅在需要动态时才推荐使用(意味着:您希望在数组的每个元素中使用不同的值,或者您的键是在字符串中,在编译时不知道。)除非它很难维护
答案 1 :(得分:4)
好吧,你可以有一个你编写的类的实例数组:
public class DataForArray
{
public int Value { get; set; }
public int LocationX { get; set; }
public int LocationY { get; set; }
}
然后是这样的:
DataForArray[] array = new DataForArray[10];
array[0] = new DataForArray();
array[0].Value = 2344;
etc...
答案 2 :(得分:3)
在C#中,你可以试试这样的东西
// initialize array
var list = new[]
{
new {Value = 2344, LocationX = 0, LocationY = 0},
new {Value = 2312, LocationX = 2, LocationY = 4},
new {Value = 2323, LocationX = 3, LocationY = 1}
}.ToList();
// iterate over array
foreach (var node in list)
{
var theValue = node.Value;
var thePosition = new Point(node.LocationX, node.LocationY);
}
// iterate over array with filtering ( value > 2300 )
foreach (var node in list.Where(el => el.Value > 2300))
{
var theValue = node.Value;
var thePosition = new Point(node.LocationX, node.LocationY);
}
// add again
list.Add(new { Value = 2399, LocationX = 9, LocationY = 9 });
答案 3 :(得分:0)
这是一个详细说明使用多维数组的链接
http://msdn.microsoft.com/en-us/library/aa288453(VS.71).aspx
答案 4 :(得分:0)
您可以在C#中使用匿名类型:
var arr = new[] {
new{Value = 1, LocationX = 2, LocationY = 3},
new{Value = 1, LocationX = 2, LocationY = 3},
new{Value = 1, LocationX = 2, LocationY = 3},
new{Value = 1, LocationX = 2, LocationY = 3},
new{Value = 1, LocationX = 2, LocationY = 3} };
只有一个问题是匿名类型的属性是只读的。所以你不能做那样的事情:
arr[1].Value = 2