C# 如何声明静态只读列表?
我有一个结构,我想有一个这种类型的静态只读列表。 在只读中,找不到结构属性(HexCode、Name)。把它们公之于众不会改变任何事情 以下是结构声明: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> {
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
并遵循正确的驼峰大小写命名。