如何在对象类型的每个实例中查看和测试变量

本文关键字:变量 测试 实例 对象 类型 | 更新日期: 2023-09-27 18:16:14

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

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

还有,这里是我得到错误的地方:

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

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

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

请帮忙好吗?

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

如何在对象类型的每个实例中查看和测试变量

为什么不这样做呢?

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,然后确保密码匹配。

无论如何,这个答案应该解决了你最初的问题。

创建用户列表

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

你可以添加如下用户

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

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