【问题标题】:c# initialize a static list in a classc# 在一个类中初始化一个静态列表
【发布时间】:2013-10-16 00:45:03
【问题描述】:

我想要的是一个用字符串初始化的二维全局列表。 如果我只想要一个简单的列表,我可以用逗号分隔的字符串初始化列表,像这样

public static readonly List<string> _architecturesName = new List<string>()
 {"x86","x64" }; 

我已经设置了一个静态类“Globals”,在这个类中,我添加了一个基于另一个类“ArchitecturesClass”的列表,用作列表的字段,类似于此处所做的:Are 2 dimensional Lists possible in c#?

 public class ArchecturesClass
 {  public  string Id { get; set; }
    public  string Name { get; set; }         }

    `*test1->*` public static readonly List<ArchecturesClass> ArchitectureList = 
           new List<ArchecturesClass>() { "2", "9"}; 
    `*test2->*` public static readonly List<ArchecturesClass> ArchitectureList = 
           new List<ArchecturesClass>() {architecturesId = "2",
                                         architecturesName = "3"};

字符串的错误是集合初始化有一些有效参数和 最后,我希望项目中的所有类都能够读取 Globals.ArchtecutreList.ID 和匹配的 Globals.ArchtecutreList.Name; 之类的内容,并且我想在全局类中初始化它而不是在方法中。

【问题讨论】:

  • 您不能使用属于该对象的值来初始化列表。您必须创建一个新对象并在那里使用速记分配。

标签: c#


【解决方案1】:

语法

new List<ArchecturesClass>() {architecturesId = "2",
                              architecturesName = "3"};

应该是

new List<ArchecturesClass>() { new ArchecturesClass>() { architecturesId = "2",
                              architecturesName = "3"}};

Collection initializers 希望您提供列表中包含的类型的实例。

你的其他尝试

public static readonly List<ArchecturesClass> ArchitectureList = 
       new List<ArchecturesClass>() { "2", "9"}; 

失败,因为 "2" 和 "9" 是字符串,而不是 ArchitecturesClass 的实例。

【讨论】:

  • 几乎,我认为这得到了它: public static List archs = new List { new ArchecturesClass() { architecturesId = "0", architecturesName= "x86"}, new ArchecturesClass () { architecturesId = "9", architecturesName = "x64"} };还找到了这个参考,它在底部有一个很好的例子msdn.microsoft.com/en-us/library/vstudio/…
猜你喜欢
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多