簡體   English   中英

似乎無法更改字符串的長度[]

[英]Can't seem to change length of string[]

我在C#中有一個數組:

string[] foo = new string[11];

foo數組的長度為10,我只將其更改為11,因為我需要一個附加值。 我唯一的問題是:我似乎無法更改數組的長度。 如果像上面的示例一樣將其更改為11,則設置一個斷點並進行調試,在編譯器通過此行之后,它的長度仍為10。

現在,當我在編譯器通過此行之后添加手表foo = new string[11] ,將擦除所有值並將長度更改為11。基本上我不知道發生了什么,尤其是為什么添加手表具有影響變量的運行時值。

有人知道這里發生了什么嗎?

    public string[] getValues()
    {
        //Why does this only have 10 dimensions after initialization?????
        string[] values = new string[11];

        string[] temp = ddlProjectnumber.Text.Split('-'); //<----- here I set break point.
        values[0] = temp[0].Trim();
        values[1] = tbTask.Text;
        values[2] = ddlSubstitute.Text;
        values[3] = ddlCategory.Text;
        values[4] = ddlSubcategory.Text;
        values[5] = cbFinished.Checked.ToString();

        if (propertychanged)
        {
            values[6] = DateTime.Now.ToString();
        }

        values[7] = cbJourney.Checked.ToString();

        return values;
    }

如果創建一個用於保存值的類,則代碼將更易於維護:

public class MyClass
{
    public string ProjectNumber { get; set; }
    public string Task { get; set; }
    public string Substitute { get; set; }
    public string Category { get; set; }
    public string Subcategory { get; set; }
    public bool Finished { get; set; }
    public DateTime? PropChangedDate { get; set; }
    public bool Journey { get; set; }
}

然后調整您的方法以僅填充類的實例,然后返回該實例:

public MyClass GetValues()
{
    var myClass = new MyClass
    {
        ProjectNumber = ddlProjectnumber.Text.Split('-').First().Trim(),
        Task = tbTask.Text,
        Substitute = ddlSubstitute.Text,
        Category = ddlCategory.Text,
        Subcategory = ddlSubcategory.Text,
        Finished = cbFinished.Checked,
        Journey = cbJourney.Checked
    };

    if (propertychanged)
        myClass.PropChangedDate = DateTime.Now;

    return myClass;
}

現在,您不必猜測哪些值存儲在數組的每個元素中。

好吧,我試了一下,將配置從調試更改為發布,然后再次調試后,它顯然已經修復了。 我猜這確實是舊代碼,但是由於某些原因,在清理並重建解決方案后,它無法正確重新編譯。 無論如何,現在它可以工作了:)

暫無
暫無

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

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