c# - 将对象参数从一个类传递到另一个类
问题描述
我有一个类,它基本上从一个连接到数据库的函数中获取一个值,传递的参数是 UserID,它存储在一个有效的数组索引 0 类型的对象中 - 当我在控制台中打印值时,UserID 输出预期值
class DatabaseClass
{
private String[,] dbUsersResults = new String[1, 3];
//**************************** SIGN IN USER ****************************
public bool dbSignIn(String username, String password)
{
UserDetails[] ud = new UserDetails[1];
Boolean isValid = false;
dbRead("SELECT * FROM user_credentials WHERE username = '" + username + "' AND password = '" + password + "'", "signin");
if ((dbUsersResults[0, 1] == username) && (dbUsersResults[0, 2] == password))
{
ud[0] = new UserDetails();
ud[0].UserID = dbUsersResults[0, 0];
ud[0].Username = username;
ud[0].Password = password;
}
}
}
现在我的问题是,当我尝试调用 UserID 对象 ud,在类 UserDetails 对象 ud,数组 0,来自不同的类时,参数为空白
我从中调用 UserID 参数的其他类的代码如下
UserDetails[] ud = new UserDetails[1];
ud[0] = new UserDetails();
Console.WriteLine(ud[0].UserID);
解决方案
您似乎有两个完全独立且不相关 ud
的变量:一个在方法dbSignIn()
中,一个在您的调用代码中。没有什么“魔法”可以让编译器明白你希望它们实际上是一样的,所以它们是分开的。
有多种方法可以解决这个问题,例如(但不限于):
- 制作
ud
一个公共成员class DatabaseClass
并从调用方使用它。 - 创建
ud
一个私有成员class DatabaseClass
并提供一个公共方法或属性来访问它 - make 方法
dbSignIn()
返回ud
变量(而不是布尔值)并从调用端使用它。 - 给方法
dbSignIn()
一个out UserDetails[] ud
参数并从调用方使用它。
除此之外,我想知道您为什么使用 UserDetails 数组,而不是单个对象。一次只处理一个用户名 + 密码,因此将其声明如下就足够了UserDetails ud
:
ud.UserID = dbUsersResults[0, 0];
ud.Username = username;
ud.Password = password;
推荐阅读
- eclipse - NoSuchMethodError OWLDisjointClassesAxioms.getOperandAsList ()
- vue.js - 编译模板时出错:Vuejs
- css - 如何通过在 CSS 中导入字体来使用自定义图标
- javascript - 浏览器不活动时的地理位置
- swift - 无法为类型“范围”调用初始化程序
' 带有类型为 '(Range )' - java - 连接到 redminote4 时发生错误
- python - python函数如何调用并且不等待它完成处理,同时该函数必须调用一次。所以,线程必须停止
- extjs - Extjs - 如何在复选框和字段标签之间添加空格?
- c# - RavenDb 索引对嵌套结构/集合的属性进行过滤和排序(扇出索引)
- javascript - 从AngularJS中的数组中删除双引号