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

本文关键字:全局变量 最佳 方式 了解 | 更新日期: 2023-09-27 18:30:46

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

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

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

谢谢Ps 我是新手 - 善良!

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

这是我

的做法。 在读取较新条目的类中,创建一个将保存最后一个条目 ID 的属性。 这可以将值存储在类的实例中。 因此,当调用读取较新条目的方法(在同一类中)时,它将只查看此 entryid 属性,并将其传递给 SQL 以仅读取比该属性更新的 (然后使用较新的最后一个条目 ID 更新条目 id)。

只要您始终使用该类的一个实例,您的最后一个条目 ID 就会被存储。 这将比全局变量更好,因为它使用预期的语言。

像这样:

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();

您的"全局变量"只是类本身中的 entryId int,它将为您保存并保留您上次读取的 ID。 我没有测试上面的代码,但希望这对您有所帮助,并且不使用全局变量。

我相信你想使用全局变量,因为你想拥有全局访问权限。我建议您使用线程安全的抽象,特别是对于将在用户之间保存消息的某些东西。考虑单例。如果您有许多用户同时编写消息,则可以应用该文章中提到的单例来同步会话,消息等。