关于c#:在.NET中,有没有全局变量的概念?

In .NET, is there a concept of global variables?

在 VB6 中,我们有在模块文件中声明的全局变量。

在.NET中,我们有这样的概念吗?或者它被会话变量和可以用作全局数据的类的静态常量变量之类的东西所取代?


你可以创建公共静态类

1
2
public static class GlobalVariable{
public static int globalvariable = 100;

}

然后你可以访问

1
GlobalVariable.globalvariable

在 VB.NET 中,您可以添加模块文件。在该模块文件中,您必须使用 Public 声明变量和/或函数。但这仅在 VB.NET

例如,模块文件是这样的

1
2
3
4
5
6
7
Module UserDetails

Public SqlCon as SqlConnection
Public DataSet as DataSet
Public dataAdaptr as SqlDataAdapter

End Module

在上面的例子中,我使用了来自任何形式、类和模块的 sql 连接、数据集、数据适配器。

这个例子已经在我的项目中使用了。你也可以在你的 Asp.net 项目中使用它。


Session 和 Application 变量在 Web 平台上是"全局的"。

  • 会话 VAR(全局到用户会话)
  • 应用程序 VAR(网站的 IIS 进程全局,即访问网站/应用程序的所有会话)

具有公共变量的模块将对 windows 类型应用程序中的所有窗体/类是全局的。


我可能会因为提到它而惹上麻烦,因为它是一个非常禁忌的话题。还有一些单例类,它们是可以实例化的类对象,但一次只能存在一个。我将一个用于 Winforms 的自定义控制台。但是,是的,您也可以使用带有静态变量的公共静态类。这些可以修改,但你会遇到"面向对象的精神"宗教人士,因为它违反了神圣的封装原则。

老实说,我只需要一次可能被称为"全局变量"的东西,而这正是我希望在控制台单例开始擦除旧行之前占用多少空间。

你需要一个全局变量来做什么?大多数情况下,使用多线程会很痛苦,而且它们通常表明您没有考虑可重用代码。全局变量是面向对象编程的胶带。