c#如何在foreach中访问由int和string组成的对象列表的元素
我有一个类的对象列表,由一个字符串和一个int组成c#如何在foreach中访问由int和string组成的对象列表的元素,c#,list,class,foreach,C#,List,Class,Foreach,我有一个类的对象列表,由一个字符串和一个int组成 public class PatternInfo { private string prpatternname; private int prpatterntier; public PatternInfo(string patternname, int patterntier) { prpatternname = patternname; prpatternti
public class PatternInfo
{
private string prpatternname;
private int prpatterntier;
public PatternInfo(string patternname, int patterntier)
{
prpatternname = patternname;
prpatterntier = patterntier;
}
}
这是一个单独的文件
我有一份此类物品的清单:
公共列表模式列表代码>
现在,对于列表中该类的每个obejct,我想将变量的值设置为这两个值:
foreach (PatternInfo x in patternlist)
{
string a = patternname;
int b = patterntier;
}
出于某种原因,我得到“名称patternname/patterntier在当前上下文中不存在”。我尝试过使用一些解决方案,但无法使其正常工作,请帮助:)这是因为属性是私有的,并且是x
的属性。将此添加到模式信息中:
public string name { get;}
public int tier {get;}
然后,在循环中,您可以有以下内容:
string a = x.name;
int b = x.tier;
public static void Main()
{
List<PatternInfo> patternlist = null;
for (int i = 0; i < 10; i++)
patternlist.Add(new PatternInfo(i.ToString(), i));
foreach(PatternInfo x in patternlist)
{
string a = x.prpatternname;
int b = x.prpatterntier;
}
}
这是因为属性是私有的,并且是x
的属性。将此添加到模式信息中:
public string name { get;}
public int tier {get;}
然后,在循环中,您可以有以下内容:
string a = x.name;
int b = x.tier;
public static void Main()
{
List<PatternInfo> patternlist = null;
for (int i = 0; i < 10; i++)
patternlist.Add(new PatternInfo(i.ToString(), i));
foreach(PatternInfo x in patternlist)
{
string a = x.prpatternname;
int b = x.prpatterntier;
}
}
要与OP保持一致,请执行以下操作:
public class PatternInfo
{
public string prpatternname { get; }
public int prpatterntier { get; }
public PatternInfo(string patternname, int patterntier)
{
prpatternname = patternname;
prpatterntier = patterntier;
}
}
由于您没有提供如何声明patternlist,我编写了以下内容:
string a = x.name;
int b = x.tier;
public static void Main()
{
List<PatternInfo> patternlist = null;
for (int i = 0; i < 10; i++)
patternlist.Add(new PatternInfo(i.ToString(), i));
foreach(PatternInfo x in patternlist)
{
string a = x.prpatternname;
int b = x.prpatterntier;
}
}
publicstaticvoidmain()
{
List patternlist=null;
对于(int i=0;i<10;i++)
添加(新的PatternInfo(i.ToString(),i));
foreach(模式列表中的模式信息x)
{
字符串a=x.prpatternname;
int b=x.pr模式层;
}
}
要与OP对齐:
public class PatternInfo
{
public string prpatternname { get; }
public int prpatterntier { get; }
public PatternInfo(string patternname, int patterntier)
{
prpatternname = patternname;
prpatterntier = patterntier;
}
}
由于您没有提供如何声明patternlist,我编写了以下内容:
string a = x.name;
int b = x.tier;
public static void Main()
{
List<PatternInfo> patternlist = null;
for (int i = 0; i < 10; i++)
patternlist.Add(new PatternInfo(i.ToString(), i));
foreach(PatternInfo x in patternlist)
{
string a = x.prpatternname;
int b = x.prpatterntier;
}
}
publicstaticvoidmain()
{
List patternlist=null;
对于(int i=0;i<10;i++)
添加(新的PatternInfo(i.ToString(),i));
foreach(模式列表中的模式信息x)
{
字符串a=x.prpatternname;
int b=x.pr模式层;
}
}
“patternname”与“prpatternname”不同,后者是私有的更改为公共的没有帮助“patternname”与“prpatternname”不同,后者是私有的更改为公共的没有帮助非常感谢,我没有将其设置为公共的,也没有正确地调用它。非常感谢,我没有将它设置为公共,也没有正确地调用它。非常感谢,我没有将它设置为公共,也没有正确地调用它。不客气。别忘了标记你喜欢的答案顺便说一句:)我必须承认,另一个答案似乎是逻辑的,因为我现在理解了我的错误,但你的答案让我明白了:)谢谢:)非常感谢,我没有把它设置为公开的,也没有正确地称呼它。欢迎你。别忘了记下你喜欢的答案顺便说一句:)我必须承认,另一个答案似乎是逻辑的,因为我现在理解了我的错误,但你的答案让我明白了:)谢谢:)