Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文本框值添加到不工作的数组C#_C#_Arrays_Winforms - Fatal编程技术网

将文本框值添加到不工作的数组C#

将文本框值添加到不工作的数组C#,c#,arrays,winforms,C#,Arrays,Winforms,我试图将textbox和numericUpandDown值添加到数组中,但它似乎不起作用 Carro []carros = new Carro[1]; private Carro carro; public Form1() { .. } private void Form1_Load(object sender, EventArgs e) { .. } private void AdicionarCarro() { this.carro = new Carro(te

我试图将textbox和numericUpandDown值添加到数组中,但它似乎不起作用

Carro []carros = new Carro[1];
private Carro carro;

public Form1()
{
    ..
}

private void Form1_Load(object sender, EventArgs e)
{
    ..
}

private void AdicionarCarro()
{
    this.carro = new Carro(textboxCor.Text, textboxMarca.Text, textboxModelo.Text,
        (int.Parse(numUpDownCilindrada.Text)), (int.Parse(numUpDownVelocidade.Text)));
}

private Carro[] AdicionarArray(Carro carro, Carro[] array)
{
    AdicionarCarro();

    int novoTamanho = array.Length + 1;

    Carro[] carros = new Carro[novoTamanho];

    for (int i = 0; i < array.Length; i++)
    {
        carros[i] = array[i];
    }

    carros[novoTamanho] = carro;


    return carros;
}

private void buttonGravar_Click(object sender, EventArgs e)
{
    AdicionarArray(carro, carros);
}
Carro[]carros=新的Carro[1];
私人卡罗卡罗;
公共表格1()
{
..
}
私有void Form1\u加载(对象发送方、事件参数e)
{
..
}
私人无效AdicionarCarro()
{
this.carro=new carro(textboxCor.Text,textboxMarca.Text,textboxModelo.Text,
(int.Parse(numUpDownCilindrada.Text)),(int.Parse(numupdowndvelocidade.Text));
}
私有Carro[]adicionarray(Carro-Carro,Carro[]数组)
{
AdicionarCarro();
int novoTamanho=array.Length+1;
卡罗[]卡罗斯=新卡罗[novoTamanho];
for(int i=0;i
当我键入值并单击“buttonGravar”时,它会给出以下信息 错误:

我很高兴能得到一些提示/帮助。

更好的方法:

private List<Carro> Carros;

public Form1()
{
    Carros = new List<Carro>();
    ..
}

private void Form1_Load(object sender, EventArgs e)
{
    ..
}

private void AdicionarCarro()
{
    var carro = new Carro(textboxCor.Text, textboxMarca.Text, textboxModelo.Text,
        (int.Parse(numUpDownCilindrada.Text)), (int.Parse(numUpDownVelocidade.Text)));
    Carros.Add(carro);
}

private void buttonGravar_Click(object sender, EventArgs e)
{
    AdicionarCarro();
}
应该是

carros[novoTamanho - 2] = carro;
原因:


数组索引从0开始
novoTamanh
表示新的长度(从1开始,与索引不同不是0),它位于数组外部。

使用
System.Collection.Generic.List
会简单得多,因为它没有固定的大小:

List<Carro> carros = new List<Carro>();
carros.AddRange(array);
carros.Add(carro);
return carros;
List carros=newlist();
carros.AddRange(数组);
添加(carro);
返回卡洛斯;

这是一个索引超出范围的异常,因为您的数组Carro的大小为tmanho:

Carro[] carros = new Carro[novoTamanho];
carros可以包含从“0”到“novoTamanho-1”索引的“novoTamanho”项目

您只需定义以下内容即可解决此问题:

int novoTamanho = array.Length + 2;
或者,如果不想管理索引,请使用列表:

List<Carro> listCarro = new List<Carro>;
listCarro.AddRAnge(array);
listCarro.Add(carro); 
return listCarro.ToArray();
列表carro=新列表;
AddRAnge(数组);
添加(carro);
返回listCarro.ToArray();

数组被定义为只包含一个值,
Carro[]carros=new Carro[1]
这就是为什么您会遇到这样的错误:您可能会忘记使用adicionarray()的返回值。这是一种根本错误的方法,不仅仅是因为您忘记更新carros变量,而是将其声明改为
List
。所有这些技巧性的索引都在乞求有人指出代码到底有多可怕,以及它需要彻底检修,而不是更多的绷带。哦,是的!谢谢,我没有意识到这一点,真是太傻了@DonBoitnott嘿,谢谢你指出这一点:D,我真的是一个初学者,甚至更低。@DonBoitnott你说的杂技索引是什么意思?很抱歉这么直截了当,但我倾向于建议更好的修复方法,不仅仅是如何避免自己遇到的问题…初学者或否。至于你的问题…我的意思是,如果你发现有必要像建议的那样进行花哨的索引,这通常意味着你滥用了数组,或者错误地处理了数组的整体用法。我还是一名学生,我们还没有做到这一点(如果我没记错的话),谢谢你的替代方案!我使用了这个,但它似乎不起作用,它说“不能隐式地将类型'System.Collections.Generic.List'转换为'criarcroform.Carro[]”
List<Carro> listCarro = new List<Carro>;
listCarro.AddRAnge(array);
listCarro.Add(carro); 
return listCarro.ToArray();