加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 编程开发 > Asp > 正文

asp.net/C#中的静态变量

发布时间:2023-12-22 03:18:15 所属栏目:Asp 来源:DaWei
导读: 我在Web应用程序项目中使用了广泛的静态变量。 现在,我从一些文章中了解到,它是整个项目的全局变量,静态变量中的数据可以由其他用户共享或覆盖(我的意思不是特定于用户或特定于会话)。
我在Web应用程序项目中使用了广泛的静态变量。 现在,我从一些文章中了解到,它是整个项目的全局变量,静态变量中的数据可以由其他用户共享或覆盖(我的意思不是特定于用户或特定于会话)。

那么,一般的编程实践是否在正常的Web应用程序开发中不使用静态变量?

是否像GOTO语句/关键字一样根本不使用静态变量,这意味着使用它们有广泛的限制,最好根本不使用? 那么在什么情况下我们要使用静态关键字呢?

然后我有一个要求,一个特定的变量必须在特定的webform.aspx.cs中仅初始化一次,并且作用域必须仅限于该特定的.aspx.cs和已登录的特定用户? 我如何满足此要求? 如果可能,可以用代码说明这一点吗?

我个人尝试尽可能避免使用静态变量。它们使代码难以进行单元测试,并且由于并发访问和竞争条件ASP 变量,还可能引入细微的错误。

就您的需求而言,您可以将变量存储为ViewState中控件的属性。如果您要存储的是用户特定数据,则可以使用会话状态。

我相信您对static的解释是错误的。

Use the static modifier to declare a

static member, which belongs to the

type itself rather than to a specific

object.

换句话说,对于该类的所有特定实例,此成员只有一个实例。

只要正确使用静态变量,就不会有任何问题。我相信您正在将静态变量与全局变量混合在一起。全局变量可以从任何地方访问。这是不希望的,因为知道何时何地设置该变量的状态很复杂。此外,这使单元测试更加困难。

这个Programmers.SE问题可能使您感兴趣。

在静态变量上,尽管它们确实有其特定用途,但出于各种原因,通常应避免使用它们。

Then i have this requirement that a particular variable has to be initialized only once in a particular webform.aspx.cs and the scope has to be restricted to only to that particular .aspx.cs and to that particular user who has logged in ? How do i meet this requirement ? If possible can any one illustrate this with code ?

对于此要求,我建议您着眼于澄清要求:

我个人更喜欢使用Session-将ViewState与ViewState一起出错很容易,而当它们出错时则很难调试!

解释:"当它们出错时,很难调试"-可以将ViewState配置为以多种方式工作,但是通常将其设置为通过将对象序列化为客户端表单(作为隐藏表单域)然后对它们进行反序列化来工作页面PostBack发生时的对象。我花了很多天来调试某个基于DNN的网站,该网站仅在某些浏览器,某些页面和某些时间出现" Invalid ViewState"问题。是什么原因造成的?几天后,我仍然不知道...因此,如果可以的话,为什么我不使用ViewState。但是,我承认这可能是一个不公平的决定-就我而言,我正在使用许多第三方代码,这些代码生成了动态页面并创建了许多ViewState(ViewState的大小和复杂性实际上是我这样做的原因之一如果可以的话,完全不要使用WebForms)。

例如,如果您有一些服务,则可以将其用作静态,因为IIS无需为服务创建重复对象,因为它们都是相同的:)

如何使用会话..
 

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章