1

我正在尝试制作一种“假操作系统”,它看起来像自己的终端,但实际上是一个 C# 控制台应用程序(为了好玩)。我需要一种方法来查看每个用户实例(用户是一个类)并测试用户名和密码是否匹配。我想有一个指针数组,其中每个元素指向不同的用户,然后遍历该数组,但我一直收到错误。我的程序中的所有课程“不安全”。(即不安全类用户{})这是错误:

无法获取托管类型 ('FakeTerminal.User') 的地址、大小或声明指向托管类型的指针

另外,这是我收到错误的地方:

User root = new User("ROOT", "password");
User*[] UserList;
UserList[0] = *(&root)

哦,以防万一,我的 User 类只有两个字符串变量:UserName 和 Password。两者都在参数化构造函数中初始化。

我知道实例本身在某种程度上是指针,但我需要一种方法来检查每个实例

请问有什么帮助吗?

编辑:有人建议使用参考,如果这是更好的方法,我该怎么做?

4

2 回答 2

1

你为什么不做这样的事情是你的伪应用程序?

User root = new User("ROOT","password");
var userList = new List<User>();
userList.Add(root);

然后,您可以将任意数量的 User 类型的对象添加到您的列表中。

要遍历它们,请执行以下操作:

User currentUser;
//logic to get username/password for current user

foreach(User validUser in userList)
{
     //logic to determine login
}
//whatever invalid login logic you need

不过,看看您要做什么,我认为字典可能会更好。您将使用您的用户名作为键,密码作为值,然后在您的 Dictionary 对象中对用户名执行 trygetvalue,然后确保密码匹配。

无论如何,这个答案应该可以解决您最初的问题。我建议您阅读字典,看看它是否适合您的需要。

于 2013-05-31T18:12:41.067 回答
0

创建用户列表

List<User> userList = new List<User>();

您可以添加如下用户

userList.Add(new User(){ UserName = "ROOT", Password = "password"});

您可以通过 for 循环或 foreach 循环来迭代项目。

于 2013-05-31T18:08:11.047 回答