2016-08-12 3 views
1

私は文字列とintで作られたクラスのオブジェクトのリストを持っています。c#foreach内のintとstringで構成されるオブジェクトのリストの要素にアクセスするには

public class PatternInfo 
{ 
    private string prpatternname; 
    private int prpatterntier; 

    public PatternInfo(string patternname, int patterntier) 
    {   
     prpatternname = patternname; 
     prpatterntier = patterntier; 
    } 
} 

これは別ファイルです。

私はそのようなオブジェクトのリストを持っている:リストでこのクラスの各obejctについて今 public List<PatternInfo> patternlist;

を、私は2つの値に変数の値を設定する:いくつかのために

foreach (PatternInfo x in patternlist) 
{ 
    string a = patternname; 
    int b = patterntier; 
} 

私は "現在のコンテキストにpatternname/patterntierという名前が存在しません"という理由があります。私はいくつかの解決策を試してみましたが、うまく動作しません:)

+0

"patternname"は "prpatternname"と同じではなく、後者は私的です – Plutonix

+0

publicに変更すると助けにならない – Bronsoner

答えて

3

OPに合わせて:

public class PatternInfo 
    { 
     public string prpatternname { get; } 
     public int prpatterntier { get; } 

     public PatternInfo(string patternname, int patterntier) 
     { 

      prpatternname = patternname; 
      prpatterntier = patterntier; 

     } 
    } 

あなたが提供していないとしてパターンリストをどのように宣言したら、私は以下を構成しました:

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; 
     } 

    } 
+0

ありがとう、私はそれを公開として設定しておらず、正しく呼び出さなかった。 – Bronsoner

+0

あなたは大歓迎です。あなたが好きな答えをマークすることを忘れないでください:) – uTeisT

+0

私は間違いを理解しているので、他の答えが論理的であると認めなければなりませんが、あなたの答えは私にそれを理解させたものでした:)ありがとう – Bronsoner

3

これは属性がプライベートであり、属性がxであるためです。 PatternInfoにこれを追加します。

public string name { get;} 
public int tier {get;} 

その後、ループの中で、あなたは以下を持つことができます。

string a = x.name; 
int b = x.tier; 
+0

ありがとう、私はそれを公開として設定せず、正しく呼び出さなかった。 – Bronsoner

関連する問題