亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 C# 中,調整數組大?。ㄔ诒纠性黾悠浯笮。褂媚J值初始化新段 - 這可靠嗎?

在 C# 中,調整數組大?。ㄔ诒纠性黾悠浯笮。褂媚J值初始化新段 - 這可靠嗎?

C#
慕哥6287543 2023-09-16 17:22:42
在 C# 中,調整數組大小(在本例中增加其大?。褂媚J值初始化新段 - 這可靠嗎?Array.Resize(ref?bytes,?bytes.Length?+?extra);我確實看到了默認值(字節數組為 0),但是是否可以安全地將其作為所有基本類型的標準行為?在我的應用程序中,節省每一秒都是一件大事,因此我認為如果默認情況下已經可用,我可以避免不必要的循環來初始化新添加的段。
查看完整描述

2 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

是的,你可以信賴這一點。從文檔(強調我的):

該方法分配一個指定大小的新數組,將舊數組中的元素復制到新數組,然后用新數組替換舊數組。數組必須是一維數組。

分配一個新數組保證用默認值填充它(有效地“將所有位設置為 0”),因此如果我們相信描述,整個操作的結果確實會為所有尚未復制的元素提供默認Array.Resize值來自舊數組。


查看完整回答
反對 回復 2023-09-16
?
慕哥9229398

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());

}

不用說,在運行這個單元測試后我會放棄它。我不會這么做。


查看完整回答
反對 回復 2023-09-16
  • 2 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號