我正在使用Argon Granberg的A *寻路脚本,并且尝试检查是否定义了列表元素
有一个Vector3值列表,存储为p.vectorPath变量。我正在尝试测试列表元素是否定义为
if ( p.vectorPath[myIndex] != null ) {
...
但是我在Unity中遇到了一个错误,即测试Vector3!= null总是= true。那么我如何测试是否定义了此特定列表索引?
谢谢。
答案 0 :(得分:2)
Vector3
是一个值类型(struct
),没有诸如未定义(或null)值类型之类的东西(除非您将其设为可空)。值类型在用C#声明时即被初始化-如果您不提供初始值,则它具有其默认值(在这种情况下为Vector3.zero
)
OTOH,如果您想知道列表在位置N
上是否有任何元素,则只需检查list.Count
是否大于N
答案 1 :(得分:0)
与其他答案Vector3
一样,它不能为null,因为它是一种值类型。您可以这样声明Nullable
类型为Vector3
的列表;
public class Foo
{
public List<Vector3?> VectorPath;
}
Foo p = new Foo();
//...stuff...
if (p.VectorPath[someIndex].HasValue)
{
//Do things.
}