我想知道C#是否可以使用object[]
定义强类型嵌套锯齿数组而不的方式。
类似:
var nested = new {1, 2, {3, {4, 5}, 6}, 7};
我想要一个int
的嵌套数组。
请考虑以下数组:
[[1, 2, [3]], 4, [5], [[[6]]]]
这是我的操作方式:
var myNestedJagged = new object[]
{
new object[]
{
1, 2, new object[] {3}
},
4,
new object[] {5},
new object[] {new object[] {new object[] {6}}}
};
答案 0 :(得分:3)
我认为可以改善这种情况的唯一方法。这是强类型的,它使您可以根据节点的类型使用单独的逻辑(通过执行显式Display display = getWindowManager().getDefaultDisplay();
imageView.getLayoutParams().height ((or width)) = display.getHeight()/2;
检查以确定哪种节点类型,或者通过执行某种OO技术来描述操作)作为基础is
中的抽象方法,并根据各自的行为方式在Node
和Tree
中单独实现,或通过实现Visitor pattern)。
Leaf
但是,建筑有点难看。
// all items are nodes
abstract class Node
{
}
// a tree is just a collection of nodes; it has no value
class Tree : Node
{
public Tree(params Node[] children)
{
Children = children;
}
public IReadOnlyCollection<Node> Children { get; }
}
// a leaf is just a value; it has no children
class Leaf : Node
{
public Leaf(int value)
{
Value = value;
}
public int Value { get; }
}
答案 1 :(得分:0)
根据您的使用,您可以使用元组:
var a = (1, 2, (3, (4, 5), 6), 7);
var b = ((1, 2, (3)), 4, (5), (((6))));
限制是创建它们后,您无法(轻松)调整它们的大小。