我需要存储包含#0 0x0000000119dcdc12 in jet_context_OpenGL::set_vertex_constant(jet_constant*, int) ()
或true
值字段的电路板,然后还可以检查这些字段的值。当然,我可以创建一个包含行和列的单独类,并将每个字段存储在列表中,然后检查是否有包含所需坐标的条目,但这不是最佳方式。
在Lua,我曾经这样做过:
false
因此,一旦创建了一个行条目,我只会在已创建的选项卡中添加一个列条目。我认为这是最优化的。
编辑:那么如何使用C#进行编辑? 编辑2:董事会将在游戏过程中成长。你死后会停下来。所以没有办法知道数组的任何维度来初始化它。
答案 0 :(得分:2)
修改强>:
最初的问题没有提到阵列预计会随着时间的推移而增长。数组不增长。一旦创建,它就是固定大小。
虽然,您可以创建一个新的数组大小并将其他数组中的旧值复制到它,但我不推荐这个,因为还有其他解决方案。
您可以使用List<List<bool>>
。它非常棘手,但可以使用简单的包装器完成。
public class BoolArray
{
List<List<bool>> storedTab;
public BoolArray(int newRowSize = 1, int newColumnSize = 1, bool defaultValue = false)
{
storedTab = new List<List<bool>>();
reSize(newRowSize, newColumnSize, defaultValue);
}
//Grows by 5 as default
public void reSize(int newRowSize = 5, int newColumnSize = 5, bool defaultValue = false)
{
//Fixes problem when newRowSize is 0
if (newRowSize <= 0)
{
//Add/Increment Column to every row
int allRow = storedTab.Count;
for (int i = 0; i < allRow; i++)
{
for (int j = 0; j < newColumnSize; j++)
{
storedTab[i].Add(defaultValue);
}
}
}
else
{
for (int i = 0; i < newRowSize; i++)
{
//Resize Row
storedTab.Add(new List<bool>());
//Resize Column
for (int j = 0; j < newColumnSize; j++)
{
storedTab[i].Add(defaultValue);
}
}
}
}
public void setValue(int row, int column, bool value)
{
storedTab[row][column] = value;
}
public bool getValue(int row, int column)
{
return storedTab[row][column];
}
public int rowSize
{
get { return storedTab.Count; }
}
public int columSize
{
get
{
return storedTab[0].Count;
}
}
public void clear()
{
for (int i = 0; i < rowSize; i++)
{
for (int j = 0; j < columSize; j++)
{
storedTab[j].Clear();
}
}
storedTab.Clear();
}
}
<强>用法强>:
BoolArray boolArray = new BoolArray(1, 1);
//Set Value
boolArray.setValue(0, 0, true);
Debug.Log("Before Row Size: " + boolArray.rowSize);
Debug.Log("Before Column Size: " + boolArray.columSize);
//Resize by 4 and 6 (now 5 by 7)
boolArray.reSize(4, 6);
Debug.Log("After Row Size: " + boolArray.rowSize);
Debug.Log("After Column Size: " + boolArray.columSize);
//Resize by 10 and 20 (now 15 by 27)
boolArray.reSize(10, 20);
Debug.Log("After Row Size: " + boolArray.rowSize);
Debug.Log("After Column Size: " + boolArray.columSize);
//Get Value
Debug.Log("Value: " + boolArray.getValue(0, 0));
boolArray.clear();
答案 1 :(得分:0)
也许您可以使用HashTable
Hashtable storedTab = new Hashtable();
//Add a value
storedTab[row+"-"+column] = true; //create a unique key like "1-3" (for row 1, column 3)
//To check if this row/column has a value
if (storedTab.ContainsKey(row+"-"+column))
{
//do something with storedTab[row+"-"+column]
}