c# - 将数据添加到结构体数组中

标签 c# winforms

我正在尝试从已定义结构的数组中添加/删除数据。

struct process
{
    public int Proc_Id;
    public int Proc_BurstTime;
    public int Proc_Priority;
    public override string ToString()
    {
        return "ID: " + Proc_Id.ToString() + " Time: " + Proc_BurstTime.ToString() + " Prior: " + Proc_Priority.ToString();
    }
};

readonly process[] ProcessList = new process[]
{
    new process{ Proc_Id = 1, Proc_BurstTime = 3000, Proc_Priority = 1},
    new process{ Proc_Id = 2, Proc_BurstTime = 5000, Proc_Priority = 2},
    new process{ Proc_Id = 3, Proc_BurstTime = 1000, Proc_Priority = 3},
    new process{ Proc_Id = 4, Proc_BurstTime = 10000, Proc_Priority = 4}
};

我看到它是只读的(根据一些谷歌搜索,我没有其他选择。 我可以修改数据,但如何将数据添加到 ProcessList 中?我尝试过 ProcessList.Add(~),但不起作用。

基本上,我真正想做的是将这个结构数组填充到 ListBox 控件中。我最初能够使用数据源填充它,我还能够修改内容并“重新数据源”它以更新列表框。但是,我无法添加或删除进程。有谁知道我能做什么?

最佳答案

您需要使用集合。

一个List<T>就可以了。

var processes = new List<process>();
processes.Add(new process
{
    Proc_Id = 1, 
    Proc_BurstTime = 3000, 
    Proc_Priority = 1
});

稍微修改一下你的代码就会得到下面的结果。

List<process> ProcessList = new List<process>()
{
    new process {Proc_Id = 1, Proc_BurstTime = 3000, Proc_Priority = 1},
    new process {Proc_Id = 2, Proc_BurstTime = 5000, Proc_Priority = 2},
    new process {Proc_Id = 3, Proc_BurstTime = 1000, Proc_Priority = 3},
    new process {Proc_Id = 4, Proc_BurstTime = 10000, Proc_Priority = 4}
};

此集合类型还具有 Add您在问题中提到的方法。

关于c# - 将数据添加到结构体数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949753/

相关文章:

c# - Windows 窗体与简单控制台应用程序的区别

c# - 如何从 HttpRequestException 获取 StatusCode?

c# - 将 CheckedListBox 项目保存到设置

WPF 相当于 Windows 窗体中的 'Control.CheckForIllegalCrossThreadCalls'

C# 窗体 : Efficiently Displaying Many Controls

c# - 如何使用System.Media.SoundPlayer异步播放声音文件?

c++ - 减少实时绘图数据的有效方法

c# - INotifyDataErrorInfo。 ErrorsChanged 如何使 wpf 显示属性错误,如 `Address.Country`

c# - 最短的内联集合初始值设定项? C#

c# - 重命名 WCF 服务时的问题