Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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# 我正在创建一个数组,我想指定它';从构造函数中删除的长度_C#_Arrays_Error Handling - Fatal编程技术网

C# 我正在创建一个数组,我想指定它';从构造函数中删除的长度

C# 我正在创建一个数组,我想指定它';从构造函数中删除的长度,c#,arrays,error-handling,C#,Arrays,Error Handling,在我的C#代码中,我有两个类,一个叫做“Names”,正如你所看到的,它非常简单,它有一个索引器和一个数组,另一个类是“Program class”,它有Main方法 class Names { private static int _length; private static string[] namesArray = new string[_length]; public string this[int i] { get =>

在我的C#代码中,我有两个类,一个叫做“Names”,正如你所看到的,它非常简单,它有一个索引器和一个数组,另一个类是“Program class”,它有Main方法

    class Names
{
    private static int _length;
    private static string[] namesArray = new string[_length];

    public string this[int i]
    {
        get => namesArray[i];
        set => namesArray[i] = value;
    }

    public Names(int length)
    {
        _length = length;
    }
}

    class Program
{
    static void Main()
    {
        Names names = new Names(10);
        names[0] = "Jerry";
        Console.WriteLine(names[0]);
        Console.ReadKey();
    }
}
当我运行代码时。。它给了我一个“IndexOutOfRangeException”,因为names数组是空的。。 我尝试将数组长度硬编码为10,而不是将“\u length”传递给数组。。而且效果很好。。 我还试图使_length变量非静态,但它给了我一个错误,它必须是静态的。。。 我试着调试它,知道错误在哪里。。当我从构造函数中赋值时,我发现“_length”变量是10。。但是当我将变量传递给数组时,数组仍然是空的。
我只需要从构造函数中指定数组长度。

删除数组的初始化,因为它的\u length变量尚未设置

同时删除静态关键字,因为它不在此处使用

private string[] namesArray;
private int _length;
从构造函数初始化

public Names(int length)
{
    _length = length;
    namesArray = new string[_length];
}

这显然与Unity无关,因为它是一个控制台应用程序。此外,
[visual studio]
标记是不正确的,因为此问题与visual studio应用程序无关,并且标记信息声明不应将其用于仅使用visual studio编写的代码。请注意只添加适当的标签。充其量,它会激怒那些不恰当使用标签的人;充其量,它会让你的问题变得混乱,因为你给我们的项目信息不正确。探索“静态”修饰符的含义和含义。长话短说,这意味着记忆中的静态信息,也就是说,这些信息将留在那里,不会消失。然而,这个概念有一点洞察力,非专业化可能很棘手,因为它与常规的非静态元素不同。你可以先退房。请注意,必须在运行时初始化的静态变量,而不是数组初始化:)希望这有助于共享代码并进行尝试