静态方法中的全局变量

这似乎很基本,但我觉得这很微不足道。 您将如何建议使用静态类(即控制台应用程序)设置全局变量?

为了给你一些更多的背景知识,主要方法是调用一些我希望得到/设置变量的自定义事件处理程序。

您有任何想法或建议表示赞赏。

最简单的方法是

public static Object MyGlobalVariable; 

这会创建一个公共静态字段。 好一点是:

 public static Object MyGlobalVariable { get; set; } 

这会创建一个公共静态属性。

C#中没有全局变量。 变量始终是本地范围的。 代码的基本单元是类,在类中,您有字段,方法和属性。

可以通过在某个类中创建公共静态字段或属性模仿“全局变量”,但您不应该这样做 。 C#因为一个很好的理由而使这很困难; 全局变量是纯粹的邪恶。 它们违反了OO设计的几个良好原则 – 封装,松耦合和高内聚,仅举几例。

我意识到这是一个初学者的问题,但我认为这是因为这是一个初学者的问题,说这个是非常重要的。 现在是开始学习C#中积极劝阻或甚至危险的策略的最佳时机,并且使用静态字段/属性作为全局变量大约是其中的六个。 这些构造有合法的用途,但是从一个地方到另一个地方传递数据不是其中之一。

如果两个不同的类依赖于相同的信息,则将信息从源传递到目标 。 这通常通过构造函数或作为被调用方法的参数来完成。 您应始终拥有一个且只有一个真正“拥有”此信息的实例; 使信息“全球化”意味着您无法在任何给定的时间点推断出依赖于它的人或者什么。

请考虑这一点,并尝试考虑其他方式,您可以共享您要存储在全局变量中的信息(即通过将其作为构造函数或方法的参数提供)。 如果您不确定,请发布您尝试做的示例,我们会帮忙。

不是100%肯定,但你可以尝试单身来保存你的变量。 如果不知道你想要完成什么,很难建议这个解决方案是否会让你不知所措。

http://www.yoda.arachsys.com/csharp/singleton.html