2 回答
TA贡献1862条经验 获得超7个赞
是的,你可以信赖这一点。从文档(强调我的):
该方法分配一个指定大小的新数组,将旧数组中的元素复制到新数组,然后用新数组替换旧数组。数组必须是一维数组。
分配一个新数组保证用默认值填充它(有效地“将所有位设置为 0”),因此如果我们相信描述,整个操作的结果确实会为所有尚未复制的元素提供默认Array.Resize
值来自旧数组。
TA贡献1877条经验 获得超6个赞
是的,它是可靠的。一种看待它的方式 - 如果新的数组元素不包含默认值,它们会包含什么?该方法不会弥补值。
我通常不会为框架代码编写单元测试,但这是测试预期行为的简单方法,特别是在文档让我们不确定的情况下。
[TestMethod]
public void Resizing_array_appends_default_values()
{
var dates = new DateTime[] {DateTime.Now};
Array.Resize(ref dates, dates.Length + 1);
Assert.AreEqual(dates.Last(), default(DateTime));
var strings = new string[] { "x" };
Array.Resize(ref strings, strings.Length + 1);
Assert.IsNull(strings.Last());
var objects = new object[] { 1, "x" };
Array.Resize(ref objects, objects.Length + 1);
Assert.IsNull(objects.Last());
}
不用说,在运行这个单元测试后我会放弃它。我不会这么做。
- 2 回答
- 0 关注
- 67 浏览
添加回答
举报