【发布时间】:2015-07-03 05:07:12
【问题描述】:
首先,对不起我的英语不好。
我有这个:
public static Users server = new Users();
static void Main(string[] args)
{
server.addNewUser(1, "John");
server.addNewUser(2, "Marlon");
server.addNewUser(3, "Lucas");
Console.WriteLine(server.countUsers()); //COUNT USERS
TcpManager manager = new TcpManager(58636, 500);
Console.Read();
}
TcpManager:
public Users test = new Users();
internal TcpManager(int port, int maxuserson)
{
test.addNewUser(4, "Julio");
test.addNewUser(5, "Marcelo");
test.addNewUser(6, "Andre");
Console.WriteLine(test.countUsers()); //COUNT USERS
}
和我的用户类:
class Users
{
Hashtable users = new Hashtable();
public void addNewUser(int id, string name)
{
if (!users.ContainsKey(id))
users.Add(id, name);
else users[id] = name;
}
public int countUsers()
{
return users.Count;
}
}
我的问题是,当我在 Main 上添加一个用户时,它可以工作! 但是当我尝试在 TcpManager 中做同样的事情时,他根本没有添加。
如何让它发挥作用? 我尝试了 List、Dictionary、Tuple,都遇到了同样的问题。
我的第一个 ConsoleWrite 返回“3”,第二个在 TcpManager 中也返回“3”,什么时候应该返回“6”。
谢谢大家,再一次,对不起我的英语。
【问题讨论】:
-
为什么要返回 6?对象 test 和 server 是独立的,具有独立的哈希表。添加到一个不会添加到另一个?
-
main方法和TcpManager使用了
Users的不同实例。 main 方法使用静态实例,而 TcpManager 使用本地成员实例。第一次从 TcpManager 调用时,哈希表是空的。将静态实例传递给TcpManager,它应该可以工作。 -
我正在尝试创建一个可以在代码中的任何位置访问和添加的用户列表,我尝试在 TcpManager 中创建一个 STATIC VOID,然后添加用户,但不起作用..
-
我有没有更简单的方法来创建来自多个用户的数据列表?