您好我是c#编程的新手我只是想问一下是否有办法将索引设为负1?
这是我的代码
string[,] table = new string[104, 15];
int xIndex = -1;
int yIndex = 0;
if(table.GetLength(0) < xIndex){
break;
}
if (result.Equals(newPrevious) || result.Equals("A") && yIndex < table.GetLength(1))
{
yIndex += 1;
table[xIndex, yIndex] = result;
}
else
{
xIndex += 1;
yIndex = 0;
table [xIndex, yIndex] = result;
}
previous = result ;
if (!result.Equals("A"))
{
newPrevious = previous;
}
这里给我一个错误
if (result.Equals(newPrevious) || result.Equals("A") && yIndex < table.GetLength(1))
{
yIndex += 1;
table[xIndex, yIndex] = result; //<---- ERROR HERE
}
IndexOutOfRangeException:数组索引超出范围。
我会解释我在做什么。我正在为我的游戏创建一个记分牌,xIndex
和yIndex
在我的记分牌中作为我的对象的位置,就像这样
例如我在string[] strData = {"A ,B ,B ,B ,C ,C ,C ,B ,B ,A ,B ,C ,A ,C "};
它会给我一个Exception
错误
但如果我将string[] strData
更改为此string[] strData = {"B ,B ,B ,B ,C ,C ,C ,B ,B ,A ,B ,C ,A ,C "};
它不会给我一个异常错误。
这是我的整个代码
string[,] table = new string[104, 15];
int xIndex = -1;
int yIndex = 0;
string newPrevious = "placeholder";
//C = BLUE, B = RED, A = GREEN
string[] strData = {"A ,C ,C ,C ,C ,C ,C ,B ,B ,A ,B ,C ,A ,C "};
//conditions
string[] scoreBoard = new string[]
{"C ", "B ", "A ",
"C B","B C" };
string OriginalData = "";
void Start(){
StartCoroutine ("Win_Log");
}
IEnumerator Win_Log(){
yield return new WaitForEndOfFrame ();
for (int i = 0; i < strData.Length; i++) {
OriginalData += strData [i];
OriginalData += ",";
}
string[] newNewData = OriginalData.Split (',');
string result = "";
string previous = "";
foreach (string newStrData in newNewData) {
Debug.Log ("This is the data : " + newStrData);
GameObject o = Instantiate (prefab_gameobject) as GameObject;
o.transform.SetParent (pos_big_road);
o.transform.localScale = Vector3.one;
img = (RawImage)o.GetComponent<RawImage> ();
//check the length so that it won't throw an exception
if (newStrData.Length > 1) {
//get only the first letter of the value A,B,C
result = newStrData.Substring (0, 1);
}
else {
result = "";
}
#region BIG ROAD
if(table.GetLength(0) < xIndex){
break;
}
if (result.Equals(newPrevious) || result.Equals("A") && yIndex < table.GetLength(1))
{
yIndex += 1;
table[xIndex, yIndex] = result;
}
else if (result.Equals("A"))
{
xIndex += 1;
table[xIndex, yIndex] = result;
}
else
{
xIndex += 1;
yIndex = 0;
table [xIndex, yIndex] = result;
}
previous = result ;
if (!result.Equals("A"))
{
newPrevious = previous;
}
这是我想要的输出
但是如果将first string value
更改为B or C
,则不会引发异常错误。
正如您在图像链接中看到的那样,如果值超过7,它将移动到x轴但仍然与y轴相同。
答案 0 :(得分:4)
不,数组索引从0开始。
我不确定尝试使用负数索引是什么意思,但你可以尝试通过考虑0来减去它(减去你的最低值)。