用另一个数组填充C#数组

时间:2017-02-23 12:32:57

标签: c# arrays

我试图使用字符串数组的值填充我的第一列。 我使用下面的代码。哪个不起作用,因为我打算使用它。它抛出"对象引用未设置为对象的实例"。有人可以解释我做错了什么并提出正确的方法吗?

private static int i = 0;
public static string[] names = new string[] { "cmd", "EUI", "ts", "fcnt", "port", "freq", "dr", "ack", "gws", "data" };
public static string[,] jdata;

static void Main(string[] args) {

        while (i++ < names.Length) {
            jdata[i,0] = names[i];
        }
}

3 个答案:

答案 0 :(得分:2)

您需要先初始化public class Base { private string ClientID; protected string Make(string param) { return this.ClientID + "_" + param; } protected void InvokeSiblingMake(Base other) { other.Make("hello world"); } } public class Class2 : Base { } public class Class3 : Base { //HERE i would like to call Make but with the THIS as Class2, not the current - Class3. public void Test(Class2 other) { InvokeSiblingMake(other); } } 阵列。作为参数,您可以使用jdata数组的长度和所需的列数。

此外,如果您的names变量在开头为0,则应在向新数组添加名称后增加它,否则您将获得超出范围异常的索引。

i

答案 1 :(得分:1)

能够在方法中使用对象,首先必须实例化它! 您的数组jdata的值为null,因此您无法访问它。

首先对其进行初始化并给出适当的尺寸,以便明确预先获取多少内存:

public static string[,] jdata = new string[names.Length, 1];

此外,如果您想要使用while循环,则需要从-1开始i。否则,您将跳过第一个条目。你应该只运行到names.Length-1

while (i++ < names.Length-1)
{
    jdata[i, 0] = names[i];
}

为什么不使用经典的for-loop?它没有字节:

for (int i = 0; i < names.Length; i++)
{
    jdata[i, 0] = names[i];
}
  

我可以稍后更改尺寸吗?含义:将值1更​​改为另一个大小?

如果你想这样做,我建议使用ListAdd方法允许您扩展List的大小。在此示例中,它是一个列表列表,您可以将其视为包含列和行的表。只有并非所有列都必须具有相同的行数。

static void Main(string[] args)
{

    List<string> names = new List<string> { "cmd", "EUI", "ts", "fcnt", "port", "freq", "dr", "ack", "gws", "data" };
    List<List<string>> jdata = new List<System.Collections.Generic.List<string>>

    jdata.Add(names);

    Console.ReadKey();
}

这有两个优点:

1)您在列中保存的列表可以具有不同的长度

2)您可以随意删除和添加值

要访问第一列,您只需使用[ ]运算符:

List<string> savednames = jdata[0];

答案 2 :(得分:0)

jdata为null ..

    private static int i = 0;
    public static string[] names = new string[] { "cmd", "EUI", "ts", "fcnt", "port", "freq", "dr", "ack", "gws", "data" };
    public static string[,] jdata = new string[names.Length, 1];

    static void Main(string[] args)
    {

        while (i++ < names.Length)
        {
            jdata[i, 0] = names[i];
        }
    }