当我不知道数组的上限时,如何在使用前正确地初始化这个数组?
本文关键字:数组 正确地 初始化 我不知道 | 更新日期: 2023-09-27 17:49:15
我有以下代码部分作用于xml文件中的<Test></Test>
节点中的值:
var tests = new ServicesTests();
var testcase = new TestData();
var x = 0;
foreach (XPathNavigator test in Service.Select("Testname"))
{
testcase.Testname[x] = test.Value;
x++;
}
tests.ServiceTests.Add(testcase);
对象在这里声明:
public class ServicesTests
{
public List<TestData> ServiceTests = new List<TestData>();
}
public class TestData
{
...
public string[] Testname { get; set; }
}
现在我收到一个空值引用异常时,试图设置数组。我知道为什么,但我不确定初始化它的正确方法是什么,因为我无法知道可以有多少个值。我读过的所有例子似乎都假设我知道这一点。
有什么好的建议吗?
感谢编辑:我更新了添加一些代码以前缺少的,因为使用列表仍然返回一个空引用错误。
如果你需要一个可扩展的数组,你需要编写代码来管理它的大小,并根据需要增长它,或者你可以使用List<string>
代替,并在你完成添加项目时将其转换为一个数组使用ToArray()
以上好答案的例子。
List<string> list = new List<string>();
foreach (XPathNavigator test in Service.Select("Testname"))
{
list.Add(test.Value);
}
var arrayIfYouStillNeedOne = list.ToArray();
您可能希望使用通用的List<string>
。您可以使用它的Add
方法将内容放入其中。如果您需要一个数组,那么很容易使用myList.ToArray()
进行转换。
使用List集合,它可以在您添加值时动态调整大小,然后如果需要,您可以将List转换为数组。
。
var list = new List<string>();
foreach (XPathNavigator test in Service.Select("Testname"))
{
list.Add(test.Value);
}
// If you need to get the values as an array
string[] array = list.ToArray();
你可以用LINQ:
一行完成testcase.TestName = Service.Select("Testname").Select(x => x.Value).ToArray();
你甚至不需要知道数组的大小。