C# 使用C在asp.net中创建全局变量#

C# 使用C在asp.net中创建全局变量#,c#,.net,asp.net,vb.net,C#,.net,Asp.net,Vb.net,我以前在开发窗口应用程序,在vb.net中使用模块创建全局变量,但我发现在C#中没有模块的概念。那么我如何在C#中创建全局变量呢?好吧,您可以在公共类中使用公共静态变量。。。但我真的希望你不要这么做 这些变量值会改变吗?它们代表什么?不要忘记,所有用户都将使用相同的变量集。静态类的静态成员 在谷歌上快速搜索C#教程,结果如下: 您应该从头开始,并尝试学习OO编程的基础知识 祝你好运。如果你使用的是ASP.NET,我会看看如何使用会话和应用程序状态,因为ASP.NET是无状态的。这是假设您正在谈

我以前在开发窗口应用程序,在vb.net中使用模块创建全局变量,但我发现在C#中没有模块的概念。那么我如何在C#

中创建全局变量呢?好吧,您可以在公共类中使用公共静态变量。。。但我真的希望你不要这么做


这些变量值会改变吗?它们代表什么?不要忘记,所有用户都将使用相同的变量集。

静态类的静态成员

在谷歌上快速搜索C#教程,结果如下:

您应该从头开始,并尝试学习OO编程的基础知识


祝你好运。

如果你使用的是ASP.NET,我会看看如何使用会话和应用程序状态,因为ASP.NET是无状态的。这是假设您正在谈论跨请求存储“全局”信息,而不仅仅是拥有一个容器来保存多个对象在一个请求期间可以访问的值。如果我的假设是错误的,我会看看乔恩的答案

根据下面的评论,您将想看看如何创建单例模式

不过,在执行此操作之前,我想先了解一下为什么要在ASP.NET应用程序中使用它,因为如果实现不正确,它会严重影响性能

因为你想做的事情围绕着数据库的东西,我还想看看:


VB模块基本上是C#中的一个公共静态类。但是正如Jon所说,你真的必须拿出好的理由来使用全局变量。

你说的是一个web应用程序,所以如果你的变量只在一个会话中使用,我建议你使用。我建议您将其用于应用程序范围的变量。

在ASP.Net中,您可以使用缓存对象创建等效的全局变量

Cache["someName"] = "some value";
使用缓存的一个好处是可以将对象放入其中

另一个好处是可以在代码中更改值

您也可以使用应用程序对象,但由于内存管理的原因,首选缓存


和往常一样,您应该避免过度使用这些全局变量,并最小化它们的大小。

全局变量?说不就行了。应该不惜一切代价避免全球化。如果是配置数据,请使用应用程序配置工具。

或者根据需要使用应用程序、会话或viewstate对象。但正如“Jon Skeet”所说,应该避免使用全局变量。但是如果您坚持要查看此链接:

您可以使用global.aspx文件,并在其中设置属性。 但是如上所述。。。为什么需要全局变量? 如果您试图保留连接字符串和系统范围的静态变量。。 将其放在web.config中


对不起,读错了。。这是针对Web应用的。

但是如果它们将其公开为静态,那么任何人都可以使用该变量!我想不出比这更方便的了。@ChaosPandion那么什么才是更好的选择呢?+1。在web应用程序中,全局对象通常意味着糟糕的设计,服务层中的某些情况除外,如缓存。@James:这取决于用例。缓存的值可能会过期,留下空引用。如果正确编写代码,则可以检查空值,并根据需要重新创建缓存的值。如果该值从未更改,则它可以是web.config中的appSetting。为什么选择downvote?这和我上面的评论是一样的。lolsession是针对每个用户的,而不是针对每个应用程序的。所以它不是真正的全局性的。两者都可以,我只是没有显式地声明应用程序状态。我试图使用一个类的单个对象来处理我的所有数据库处理。基本上,我有一些类,如数据层、业务层,我在windows应用程序中使用。现在我想使用这些类。在vb.net中,我创建了这些类的公共对象,并在整个应用程序中使用。但是我不知道如何创建全局对象。对所有这些类使用session好吗objects@Shantanu:这些对象的状态是什么?我认为这可能是有帮助的,把这看作两个单独的问题:1)是否使用全局变量来实现特定的目的;2)如果使用它们,最合适的方法是什么?我的连接字符串只在Web配置中。大约有40-50个函数用于管理所有与数据库相关的任务。我需要使用这些课程,这样我的工作会变得更容易。啊,我明白了。。。我认为您需要了解分层体系结构,将所有dbase类放在一个单独的项目中,称之为DAL左右,然后在主项目中导入DAL项目名称空间,并从那里引用所有类。甚至更酷。。。看看SOA……将您的类转换为Web服务,并使用它们传递数据(尽管确保您传递的对象没有深层继承性。(希望这有意义?)使用缓存对象比使用应用程序对象更可取。原因是,如果ASP.Net工作进程的内存利用率接近其限制,则会释放一些缓存以释放内存,但应用程序不会。因此,使用应用程序对象可能会导致工作进程循环,而使用缓存将避免这不是不可取的行为。