我想了解C#中使用全局变量的最佳方法

时间:2016-01-17 18:41:53

标签: c# variables visual-studio-2013 scope global

我正在做一个大学项目。它是Windows窗体中的聊天应用程序。我想了解拥有全局变量的正确方法,即使这违背了oop哲学!

我的主类调用另一个类中的方法来首先获取聊天消息。然后我将使用全局变量来跟踪上次更新消息,然后从数据库中仅检索较新的条目。因此,此变量将保留最新更新的entryid

如果有一种比全球更好的方式那么我就是全部的耳朵。否则,您能否建议如何最好地实现这一目标?

由于 Ps我是新手 - 善良!

2 个答案:

答案 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。我没有测试上面的代码,但希望这可以帮助你,而不使用全局变量。