我试图通过Getter返回一个字符串,该字符串是从一个循环遍历mysql查询的DataRead对象获得的。问题是,在加载时,字符串不会加载到主窗体的标签上,它返回一个空字符串,如果我在声明时将字符串赋给变量,它会将其返回到我的主窗体。这是代码:
string text;
public string Text { get { return text; } }
public void DBConn()
{
MySqlConnection conn = new MySqlConnection(connStr);
DataSet ds = new DataSet();
MySqlDataReader reader = null;
try
{
// connection to DB
reader = cmd.ExecuteReader();
if (reader != null && reader.HasRows)
{
while (reader.Read())
{
text = reader["string1"].ToString() + " " + reader["string2"].ToString() + " " + reader["string3"].ToString();
}
}
}
// try, catch. conn.close()
}
读者将值分配到 text 就好了,但在while之外,该值未分配给全局声明的变量,它似乎在离开循环后立即被销毁。有人可以帮忙吗?
谢谢。
答案 0 :(得分:0)
感谢那些帮助我找到所述问题解决方案的人。正如你们中的一些人所说的那样(并且在完成大量研究之前我一直缺乏理解的知识),这个问题结果证明我的主要形式与第一个类的实例不同。包含Getter的类。我现在知道我应该在原帖中提到所有这些细节,我向那些试图从一小段代码中理解的人道歉。经过对 Instances 的大量研究后,我得到的解决方案首先是创建一个包含静态Getter和Setters public static string Text { set; get; }
的类(这就是我想要的方法,以便从其他人轻松访问这有助于使它们可以从所有实例访问,它可能不是最好的解决方案,尤其是在OOP上 - 在我的研究中,我在某处读到使用Setter和Getters是浪费时间而不是程序员的最佳实践,它是最好封装,但因为我还很新鲜,我会在以后查看如何做到这一点。
再次感谢你们。