Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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
C# Unity C中的变量参数数组为空_C#_Mono - Fatal编程技术网

C# Unity C中的变量参数数组为空

C# Unity C中的变量参数数组为空,c#,mono,C#,Mono,在Unity3D下运行的C脚本中,我使用变量参数定义了一个简单的函数 void foo(string bar, params string[] baz) { Debug.Log(baz.Length); } 然后我在代码的后面使用这个函数 foo("abc", "def", "ghi"); 但是,baz没有返回2,因为应该有两个额外的参数,而是有0个元素 我错过了什么?此外,这是在一个大型ish应用程序中使用的,那么还有哪些代码会影响这一点呢?我运行了您的代码。baz的大小是2。您可

在Unity3D下运行的C脚本中,我使用变量参数定义了一个简单的函数

void foo(string bar, params string[] baz) {
    Debug.Log(baz.Length);
}
然后我在代码的后面使用这个函数

foo("abc", "def", "ghi");
但是,baz没有返回2,因为应该有两个额外的参数,而是有0个元素


我错过了什么?此外,这是在一个大型ish应用程序中使用的,那么还有哪些代码会影响这一点呢?

我运行了您的代码。baz的大小是2。您可能正在某处覆盖您的函数。您可以将函数设置为私有函数,并单独对其进行单元测试

public class Test : MonoBehaviour 
{
    void Start()
    {
        foo("abc", "def", "ghi");
    }

    private void foo(string bar, params string[] baz) 
    {
        Debug.Log(baz.Length);
    }
}

我刚刚试过这个,它显示了预期的2。此外,这是在一个大型ish应用程序中使用的,那么还有什么其他代码会影响它呢?你有可能在某处超载吗?如果看不到更多的代码,就很难说了。虽然这不能完全回答我的问题,但我还是接受了,因为没有它,我就无法修复代码。仍然不确定问题出在哪里,但将其更改为protected使其按预期工作。虽然仅从编码的角度来看,我应该继续使用这个工作代码,但我真正感兴趣的是为什么我的修复程序能工作?不管怎样,它本来应该得到保护的,呵呵。