我在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;
}
答案 0 :(得分:4)
如果您创建一个类来保存您的值,您的代码将更容易维护:
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;
}
现在您不必猜测在数组的每个元素中存储了哪些值。
答案 1 :(得分:0)
好吧我玩了一下,在将配置从调试更改为发布再到再次调试之后,它显然已经修复了。我想这真的是旧代码,但由于某种原因,在我清理并重建我的解决方案后它没有正确重新编译。无论如何它现在有效:)