簡體   English   中英

將項目添加到通用列表時,“索引超出了數組的范圍”

[英]“Index was outside the bounds of the array” when adding an item to a generic list

我只是遇到了一個獨特的錯誤,一個實時網站在登錄時拋出了“索引超出數組范圍”的錯誤。 我將錯誤跟蹤到了從舊項目繼承的舊“ timing”文件。 這是全班

public class TimingObject
{
    public DateTime timestamp { get; set; }
    public String call { get; set; }
    public TimeSpan duration { get; set; }

    // create a new timing object starting now
    public TimingObject()
    {
        timestamp = DateTime.Now;
    }

    public TimingObject(String call)
    {
        timestamp = DateTime.Now;
        this.call = call;
    }

    public void Stop()
    {
        List<TimingObject> timings;
        if (HttpContextManager.Current.Cache["PageTimings"] == null)
            timings = new List<TimingObject>();
        else
            timings = HttpContextManager.Current.Cache["PageTimings"] as List<TimingObject>;
        this.duration = (DateTime.Now - this.timestamp);
        timings.Add(this);
        HttpContextManager.Current.Cache["PageTimings"] = timings;
    }
}

該錯誤是由timings.Add(this)拋出的。 項目添加到列表時Index was out of bounds為什么Index was out of bounds

如果列表太大,會發生這種情況嗎? 而且它到底有多大?

該代碼是冗余的,已被刪除。 但是我真的很想知道為什么會這樣。

List<T>不是線程安全的,並且此代碼看起來可疑,就像您將從多個線程中獲取List<T>的共享實例一樣。 我懷疑您是同時從兩個不同的線程添加到列表,並拋出使List在后台運行的數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM