Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity 3D C#检查列表中的矢量3_C#_List_Unity3d - Fatal编程技术网

Unity 3D C#检查列表中的矢量3

Unity 3D C#检查列表中的矢量3,c#,list,unity3d,C#,List,Unity3d,我正在使用Argon Granberg的A*寻路脚本,并试图检查是否定义了列表元素 存在存储为p.vectorPath变量的Vector3值列表。我试图测试列表元素是否是用 if ( p.vectorPath[myIndex] != null ) { ... 但是我在Unity中遇到了一个错误,测试矢量3null将始终=true。那么,如何测试是否定义了这个特定的列表索引呢 谢谢。Vector3是一种值类型(struct),没有未定义(或空)值类型(除非您将其设置为可空)。值类型在c#中声明时

我正在使用Argon Granberg的A*寻路脚本,并试图检查是否定义了列表元素

存在存储为p.vectorPath变量的Vector3值列表。我试图测试列表元素是否是用

if ( p.vectorPath[myIndex] != null ) {
...
但是我在Unity中遇到了一个错误,测试矢量3null将始终=true。那么,如何测试是否定义了这个特定的列表索引呢


谢谢。

Vector3
是一种值类型(
struct
),没有未定义(或空)值类型(除非您将其设置为可空)。值类型在c#中声明时即被初始化-如果未提供初始值,则它有其默认值(
Vector3.zero,在本例中为


OTOH,如果您想知道列表在
N
位置是否有任何元素,您可以检查
list.Count
是否大于
N
,与其他答案一样
Vector3
不能为空,因为它是值类型。您可以使用
null
类型的
Vector3
声明列表,如下所示

public class Foo
{
    public List<Vector3?> VectorPath;
}

Foo p = new Foo();

//...stuff...

if (p.VectorPath[someIndex].HasValue)
{
    //Do things.
}
公共类Foo
{
公共列表向量路径;
}
Foo p=新的Foo();
//…东西。。。
if(p.VectorPath[someIndex].HasValue)
{
//做事。
}

您所说的“定义”是什么意思?你是说初始化?Vector3是一种值类型(struct),没有未定义(或null)的值类型(除非将其设置为可为null)。值类型在c#中声明的那一刻被初始化-如果您没有提供初始值,它有它的默认值(在本例中为Vector3.zero),那么作为回答,如果您想知道列表在位置N是否有任何元素,您可以检查list.Count是否大于N@C.Carter我会,,但我不确定这是不是什么means@GeoffL那么,你应用了这个建议吗?这个答案对你有帮助吗?如果是,您可以将其标记为“已接受”,以便其他有相同问题的人更容易找到解决方案。