2016-11-20 72 views
0

私はUserという名前のクラスを持っています。クラスには、作成されたすべてのユーザーを格納するリストであるUsersという静的プロパティがあります。ユーザーをインスタンス化するときに自動的にこのリストに追加したいので、これをUserクラスのコンストラクタブロックに含めておきます。C#クラスのインスタンスをリストに格納する方法

私は以下のコードを書いていますが、コンストラクタでユーザーを作成すると、それらはユーザーリストに追加されず、リストは空のままです。

以下は私が書いたコードです。

public class User 
{ 
    private static List<User> _users=new List<User>(); 
    private string _name; 

    public User(string Name) 
    { 
     _name=Name; 
     _users.Add(this); 
    } 
} 

私はUserクラスのインスタンスを作成した直後に各ユーザーをリストに追加できます。しかし、私はこれを自動的に行う方法があるかどうかを知りたい。

また、Userクラス内のユーザーリスト、または各ユーザーを作成する基本クラスを持つ方がよいかどうかを知る必要があります。

+3

これは悪い考えです。たとえば、メモリがリークします。 – SLaks

+1

Userクラスの中にUserのリストを保存しようとする理由は何ですか? – peval27

+0

静的リストをUserクラスの中で宣言して、User.Usersのようにアクセスできるようにすることがよりクリーンであると思いました。 もっと良いアイデアを教えてください。さらに、インスタンスがコンストラクタによって作成されると、リストをユーザークラスに追加するにはどうすればいいですか? –

答えて

0

標準的な方法で作成したユーザーの参照を保持することをお勧めします。

public class User 
{ 
    private string _name; 

    public User(string Name) 
    { 
     _name = Name; 
    } 
} 

var users = new List<User>(); 
users.Add(new User("foo")); 
users.Add(new User("bar")); 

Console.Writeline(users.Count); // this will say 2! 
// you can now use your list of users. 
+0

ありがとうございます。私はこれを試してみる。 –

関連する問題