我正在做一个大学项目。它是Windows窗体中的聊天应用程序。我想了解拥有全局变量的正确方法,即使这违背了oop哲学!
我的主类调用另一个类中的方法来首先获取聊天消息。然后我将使用全局变量来跟踪上次更新消息,然后从数据库中仅检索较新的条目。因此,此变量将保留最新更新的entryid
如果有一种比全球更好的方式那么我就是全部的耳朵。否则,您能否建议如何最好地实现这一目标?
由于 Ps我是新手 - 善良!
答案 0 :(得分:0)
我相信您想使用全局变量,因为您希望拥有全局访问权限。我建议你使用抽象,这将是线程安全的,特别是对于可以在用户之间保存消息的东西。考虑singleton。如果您有许多用户同时编写邮件,您可以应用该文章中提到的单例,以便同步会话,消息等。
答案 1 :(得分:0)
在这里,我是如何做到的。在您的类中读取和读取较新的条目,创建一个将保存最后一个entryid的属性。这可以在您的类实例中存储您的值。因此,当调用读取较新条目的方法(在同一类中)时,它将只查看此entryid属性,并将其传递给SQL以仅读取比那些更新的属性(然后使用更新的条目更新较新的最后一个报道。)
只要您始终使用该类的一个实例,就会存储您的最后一个entryid。这将比全局变量更好,因为它使用了预期的语言。
这样的事情:
public class ReadNewestEntries {
public int entryId {get;set}
public List<someDataType> ReadNewEntries() {
// some code to read the database, using the entryId
// Get last ID read
entryId = dataList.Max(x => x.entryId);
}
}
// in main class:
ReadNewestEntries getNewEntries = new ReadNewestEntries();
// Then just keep this class instance around to use
List<someDataType> = getNewEntries.ReadNewEntries();
你的全球变量&#34;只是类本身中的entryId int,它将保存并保留您上次读取的ID。我没有测试上面的代码,但希望这可以帮助你,而不使用全局变量。