如何从C#中删除数组中的元素

时间:2016-01-11 00:15:20

标签: c# arrays

所以我这里是我的代码:我有2个表格, - form1中的abutton带你进入form2。 -form2中包含Datagridview - 在表单1中输入信息(名称,年龄),然后在form2中的datagridview中加载它们   - 当我选择一行删除fom datagrid视图时,我希望从数组中删除该行。(我该怎么做)  提前谢谢你

class Class1
{
   public struct client
    {
        public string nom;
        public string prenom;
        public int age;
    }

   public static client[] TC = new client[100];
   public static int i = 0;
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Show();
    }

    private void btn_ajouter_Click(object sender, EventArgs e)
    {

        Class1.TC[Class1.i].nom = textBox_nom.Text;
        Class1.TC[Class1.i].prenom = textBox_prenom.Text;
        Class1.TC[Class1.i].age = int.Parse(textBox_age.Text);

        textBox_age.Clear();
        textBox_nom.Clear();
        textBox_prenom.Clear();

        Class1.i = Class1.i + 1;
    }
}


public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void btn_afficher_Click(object sender, EventArgs e)
    {
        dataGridView1.Rows.Clear();
        for (int j = 0; j <= Class1.i-1; j++)
        {
            dataGridView1.Rows.Add(Class1.TC[j].nom,Class1.TC[j].prenom,Class1.TC[j].age);
        }
    }

    private void btn_supprimer_Click(object sender, EventArgs e)
    {
        dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
    }
}

3 个答案:

答案 0 :(得分:2)

这是从数组中删除项目的扩展方法:

public static T[] RemoveAt<T> (this T[] arr, int index) {
    return arr.Where ((e, i) => i != index).ToArray ();
}

由于数组在C#中是不可变的,因此实际上无法从数组中删除元素。 extension方法返回一个新数组,其中删除了指定的元素,因此您应该像这样调用它:myarr = myarr.RemoveAt (index);

答案 1 :(得分:2)

你无法从数组中“删除”,数组的大小是固定的。您创建一个包含100个客户端的数组,总是有100个客户端,您应该使用List而是使用其上的添加/删除方法来更改它的元素。

答案 2 :(得分:-1)

您可以改为创建与此类数组相同的新列表

var yourList = yourArray.ToList();

yourList.Remove(someValue)
// to remove a specific value from your array

 yourList.RemoveAt(someIndex)
// to remove value from specific index.