2016-08-20 23 views
0

私は構造体の配列を持っています。 GlobalVariables.csにグローバルに保存するにはどうすればよいですか?試してみると、保護レベルのためにアクセスできないというエラーが表示されます。助けてください!ここでC#でGlobalVariables.csに構造体の配列を格納する

はGlobalVariables.csコードです:ここで

public class GlobalVariables 
    { 
     List<Employee[]> persons = new List<Employee[]>(); 
    } 

は、フォームのコードです:

List<Employee> persons = new List<Employee>() 
{ 
    new Employee { Name = "alfred", Id = 203476, Authority = "1" }, 
    new Employee { Name = "barbara", Id = 182856, Authority = "4" }, 
    new Employee { Name = "chris", Id = 398046, Authority = "2" }, 
}; 

そしてここでは、従業員の構造体である:

public struct Employee 
    {  
     public string Name; 
     public int Id; 
     public string Authority; 
    } 
+0

内部クラスのEmployees構造体がネストされた型として宣言されていますか? –

答えて

0

私はありませんあなたのコードからあなたがやろうとしていることを確認してください。しかし、GlobalVariablesを静的クラス(public static class GlobalVariables)にしてからacceあなたの他のクラスのGlobalVariables.personsのようなものは、大丈夫です。それでも問題が解決しない場合は、コードで何をしたいのかをもう少し説明してみてください。

public static class GlobalVariables 
{ 
    public static List<Employee[]> persons = new List<Employee[]>(); 

//静的クラスのフィールドは(他のクラスから)そして、他のクラス }

からアクセスした場合、静的および公共する必要があります

Employee person = new Employee(); 
GlobalVariables.persons.Add(person); 

EDIT:おっと - ちょうど注目グローバルリストは配列のリストなので、personの代わりにperson []を追加します。なぜあなたはそれをしたいのか分かりませんが、上記のコードはpublic staticを使用してグローバルアクセスの質問に答えています。サイドノートで

List<Employee> 

の使用は、ほとんどの目的のために

List<Employee[]> 

よりもはるかに簡単になります。あなたが本当にグループにあなたの従業員が必要な場合は

GlobalVariables.persons.Where(p=>p.Authority=="2"); 

のようなものを使用して必要な場合は、常にグループあなたのリストをすることができ、グローバル辞書<>ではなくアレイのリストを使用する方がよいかもしれません。

+0

まさに私が何をしていたのか。どうもありがとうございました。 – user3905287

関連する問題