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 關注
- 158 瀏覽
添加回答
舉報