我试图使用字符串数组的值填充我的第一列。 我使用下面的代码。哪个不起作用,因为我打算使用它。它抛出"对象引用未设置为对象的实例"。有人可以解释我做错了什么并提出正确的方法吗?
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];
}
}
答案 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更改为另一个大小?
如果你想这样做,我建议使用List。 Add
方法允许您扩展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];
}
}