Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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#_List_Struct_Readonly - Fatal编程技术网

C# 如何声明静态只读列表?

C# 如何声明静态只读列表?,c#,list,struct,readonly,C#,List,Struct,Readonly,我有一个结构,我想有一个这种类型的静态只读列表。 在只读中,找不到结构属性(HexCode、Name)。把它们公之于众不会改变任何事情 以下是结构声明: public struct FixedDataStruct { string HexCode; string Name; } 以下是清单: private static readonly List<FixedDataStruct> myList= new List<FixedDataStruct> {

我有一个结构,我想有一个这种类型的静态只读列表。 在只读中,找不到结构属性(HexCode、Name)。把它们公之于众不会改变任何事情

以下是结构声明:

public struct FixedDataStruct
{
    string HexCode;
    string Name;
}
以下是清单:

private static readonly List<FixedDataStruct> myList= new List<FixedDataStruct>
{
        { HexCode = "12", Name = "Chenger" };
};
private static readonly List myList=新列表
{
{HexCode=“12”,Name=“Chenger”};
};
怎么样

private static readonly List<FixedDataStruct> myList = new List<FixedDataStruct>
{
    new FixedDataStruct("12","Chenger")
};
怎么样

private static readonly List<FixedDataStruct> myList = new List<FixedDataStruct>
{
    new FixedDataStruct("12","Chenger")
};

找不到HexCode和Name,因为它们是FixedDataStruct的字段,但您将它们作为列表对象中匿名对象的成员进行分配。您必须首先创建FixedDataStruct的实例,将其添加到列表中,并分配其字段:

public struct FixedDataStruct
{
    public string HexCode;
    public string Name;
}

private static readonly List<FixedDataStruct> myList = new List<FixedDataStruct>() { 
    new FixedDataStruct() { HexCode = "12", Name = "Chenger" }
};
public struct FixedDataStruct
{
公共字符串十六进制码;
公共字符串名称;
}
私有静态只读列表myList=new List(){
新的FixedDataStruct(){HexCode=“12”,Name=“Chenger”}
};

找不到HexCode和Name,因为它们是FixedDataStruct的字段,但您将它们作为列表对象中匿名对象的成员进行分配。您必须首先创建FixedDataStruct的实例,将其添加到列表中,并分配其字段:

public struct FixedDataStruct
{
    public string HexCode;
    public string Name;
}

private static readonly List<FixedDataStruct> myList = new List<FixedDataStruct>() { 
    new FixedDataStruct() { HexCode = "12", Name = "Chenger" }
};
public struct FixedDataStruct
{
公共字符串十六进制码;
公共字符串名称;
}
私有静态只读列表myList=new List(){
新的FixedDataStruct(){HexCode=“12”,Name=“Chenger”}
};


结构的两个成员是私有的,请尝试将它们公开。此外,在发布诸如“我做错了什么”之类的问题时,请确保发布足够的信息,说明您认为自己做错了什么,例如编译器错误、异常、不正确的结果等。如果您缺少
新的
操作符,则您有一个
不应该在那里。总之,您应该阅读集合初始化的文档syntax@LasseV结构上的ågsætherKarlsen公共字段?这不安全。@Parrish丈夫:是的,它们应该是只读属性。在你的问题中没有你改变的痕迹。既然是我编译的,我只能假设你在错误的地方添加了位。你能更新这个问题吗,这样我们就不必猜测你做了什么?你的结构的两个成员是私有的,试着将它们公开。此外,在发布诸如“我做错了什么”之类的问题时,请确保发布足够的信息,说明您认为自己做错了什么,例如编译器错误、异常、不正确的结果等。如果您缺少
新的
操作符,则您有一个
不应该在那里。总之,您应该阅读集合初始化的文档syntax@LasseV结构上的ågsætherKarlsen公共字段?这不安全。@Parrish丈夫:是的,它们应该是只读属性。在你的问题中没有你改变的痕迹。既然是我编译的,我只能假设你在错误的地方添加了位。你能更新这个问题吗,这样我们就不用猜你做了什么?它们是字段,不是属性。您所展示的代码还将首先构造列表,然后构造一个新的FixedDataStruct值,分配其字段,然后将其添加到list.OP中,称之为properties。无论如何,这一点与所问的问题无关,这就是为什么找不到HexCode和Name的原因。我已经回答了这个问题。
但是您分配它们就像它们是列表对象的属性一样
,不,OP没有这样做。他们正试图将这些属性分配给匿名对象。此外,OP如何调用它们并不重要,它们仍然是字段。字段和属性非常不同。好的,我已经编辑了我的答案以引用匿名对象,并将它们称为字段而不是属性。代码保持不变。它们是字段,而不是属性。您所展示的代码还将首先构造列表,然后构造一个新的FixedDataStruct值,分配其字段,然后将其添加到list.OP中,称之为properties。无论如何,这一点与所问的问题无关,这就是为什么找不到HexCode和Name的原因。我已经回答了这个问题。
但是您分配它们就像它们是列表对象的属性一样
,不,OP没有这样做。他们正试图将这些属性分配给匿名对象。此外,OP如何调用它们并不重要,它们仍然是字段。字段和属性非常不同。好的,我已经编辑了我的答案以引用匿名对象,并将它们称为字段而不是属性。代码保持不变。如果使用公共只读属性代替
HexCode
Name
,效果会更好。或者,如果打算使用
private
,则添加了
private
并遵循适当的驼峰大小写命名。如果使用
HexCode
Name
代替公共只读属性,效果会更好。或者,如果打算使用
private
,则添加
private
并遵循正确的驼峰大小写命名。