【问题标题】:Static classes overview [closed]静态类概述 [关闭]
【发布时间】:2011-11-11 02:11:27
【问题描述】:

我阅读了一些关于静态类的文章,但我有一些问题:

  1. 静态类在内存中的位置?

  2. 根据C# Static Methods : means that you want the declaration to refer to a single location 如果我在 Asp.Net 中使用静态类是否意味着我有一个在所有请求之间共享的位置?

  3. 我在文章中读到静态类和静态方法比面向实例的类更快,所以为什么我没有在每个地方看到它们。我的意思是在 .Net 中有一些静态类和方法也存在。

【问题讨论】:

  • 坚持 SO 以获取知识,不要到处寻找明显包含 FUD 的网站,例如“静态类和静态方法更快”。 :)
  • 如果是这样,请给我(和其他不太了解静态类的人)一些关于那个的参考。谢谢

标签: c# .net asp.net oop c#-4.0


【解决方案1】:

1.

静态类由 .NET Framework common 自动加载 当程序或命名空间包含 类已加载。

所以这意味着静态类被加载到内存中。这意味着您不希望在进程启动时将所有类都加载到内存中。

2.asp.net 中的静态类保存在应用程序状态中,所以是的,您有一个在所有请求之间共享的位置。 静态方法在 asp.net 中很有用,但前提是您不使用方法内部的静态对象,因为不同线程访问修改同一个变量时可能会遇到麻烦。

3.如果您使用大量静态类,它们将被加载到内存中,这不是您想要的。

查看此链接了解更多信息: static variables in asp.net/C#

【讨论】:

  • greate @Dorin.in No. 3,拥有巨大的内存是所有类都将加载的重要吗?
  • 是的 ram 内存,这是必要的。但不要忘记注意,如果您使用数据库,则不建议使用静态类来连接它,因为从应用程序加载时连接打开到应用程序关闭时,它会保持连接打开.
  • 这几乎是正确的。在访问该类的任何静态或实例成员之前,CLR 不会初始化该类的静态字段。启动应用或加载程序集时不会发生这种情况。
  • msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx ;我从 MSDN 获取了这些信息。静态成员在被访问时被初始化,而静态类在程序集被加载时被初始化。
猜你喜欢
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 2017-01-19
相关资源
最近更新 更多