c#如何在foreach中访问由int和string组成的对象列表的元素

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

我有一个类的对象列表,由一个字符串和一个int组成

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”不同,后者是私有的更改为公共的没有帮助非常感谢,我没有将其设置为公共的,也没有正确地调用它。非常感谢,我没有将它设置为公共,也没有正确地调用它。非常感谢,我没有将它设置为公共,也没有正确地调用它。不客气。别忘了标记你喜欢的答案顺便说一句:)我必须承认,另一个答案似乎是逻辑的,因为我现在理解了我的错误,但你的答案让我明白了:)谢谢:)非常感谢,我没有把它设置为公开的,也没有正确地称呼它。欢迎你。别忘了记下你喜欢的答案顺便说一句:)我必须承认,另一个答案似乎是逻辑的,因为我现在理解了我的错误,但你的答案让我明白了:)谢谢:)