如何对未定义的向量列表项进行分类?

时间:2018-11-08 17:49:27

标签: c# list structure

我知道未定义的vector3 = default(vector3),但是不存在的向量列表项如何处理?例如:

List<Vector3> stuff = new List<Vector3>();
for(int i=1; i<10; i++){
stuff.add(new Vector3(0 + i, 0, 0));
}

在这种情况下,会考虑什么东西[15]?我知道它是未定义的,但可以说您不知道它是否已定义。您将如何找到它呢?就像,如果stuff [15]是未定义的,则print(“ stuff [15]是未定义的”)并中断。

2 个答案:

答案 0 :(得分:0)

假设您要询问代码是否能够访问stuff[15],否。

之所以这样做是因为您仅向其中添加了10个元素,每个元素的类型均为vector。

List<Vector3> stuff = new List<Vector3>();
for (int i = 0; i < 10; i++) {
    stuff.add(new Vector3(0 + i, 0, 0));
}

此代码将在给定位置添加10次新Vector,其中第一个参数为0 + i。由于只有10个元素,stuff [15]将不会被访问,并且将引发ArrayOutOfBoundsException。

要安全检查数组是否可以包含第15个元素,请使用if语句

if (stuff.Length > 15) {
    stuff[15]; // will only be called if an element exists
}

答案 1 :(得分:0)

在某种程度上,由于Frontear的回答,我找到了答案。

List<Vector3> stuff = new List<Vector3>();
for(int i=1; i<10; i++){
stuff.add(new Vector3(0 + i, 0, 0));
}

if(15 > stuff.Count ){
print("stuff[15] is undefined")
break;
}

因此,所有未定义的列表项显然超出了已定义列表项的数量范围,因此,要找出列表项是否未定义,只需将其数量与已定义列表项的数量进行比较即可。

我想这是一个非常简单的答案,我只是想说一句话,您可以将已定义/未定义列表项设置为等于一个布尔值,以表示是否已定义;像东西[15] ==未定义。显然不是...