【问题标题】:C# Array without a specified size没有指定大小的 C# 数组
【发布时间】:2017-07-27 20:57:57
【问题描述】:

当我不知道元素的确切数量时,我有一个关于在 C# 中创建数组的问题。我发现了多个类似的问题,例如this one。那里的建议是使用列表而不是数组。在该示例和所有其他示例中,我已经看到它实例化了一个“字符串”列表。我可以对结构做同样的事情吗?

例如,我有以下用于存储失败信息的结构,但在测试开始时我不知道会发生多少失败。可能是 0,也可能是数百。

    public struct EraseFailures
    {
        public string timestamp;
        public string bus;
        public string channel;
        public string die;
        public string block;
    }

那么我也可以创建一个列表吗?

    List<EraseFailures> eFails = new List<EraseFailures>();

它编译得很好,但我想确保这是最好的方法。如果是,将值添加到我的列表的语法是什么?因为以下似乎不正确...

     eFails.bus.Add("bus0");

似乎我可能必须使用我想要的值创建一个新结构,然后将其添加到列表中。

【问题讨论】:

  • 似乎我可以用我想要的值创建一个新结构,然后将其添加到列表中。
  • 想一想:eFails.bus.Add("bus0"); 应该做什么? bus0 会添加到哪里?
  • 请注意mutable structs are evil,如果您觉得需要创建一个,您应该公开只读属性并在构造函数中设置属性。
  • 您已经回答了您的问题并且您是正确的。 eFails.Add(new EraseFailures() { bus = "bus0" });

标签: c# arrays list struct


【解决方案1】:

如果我没有正确理解你,你问的是如何使用键入的List... 像这样使用它:

//init list
List<EraseFailures> fails = new List<EraseFailures>();

//make instance of EraseFailuers struct
EraseFailures f = new EraseFailures();
//add data
f.bus = "bus01";
f.channel = "somechannel";
//etc
fails.Add(f);

【讨论】:

  • 是的,我认为这就是我所需要的。只需要比我更聪明的人来确认。谢谢。
  • 很高兴我帮助了你。而且我不一定更聪明,只是有更多的经验。祝你的项目好运。
猜你喜欢
  • 2013-01-19
  • 2019-02-09
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 2012-03-17
  • 1970-01-01
相关资源
最近更新 更多