【问题标题】:asp.net declaring global variable/class in application scope 3 ways. Which one is best?asp.net 在应用程序范围内声明全局变量/类的 3 种方式。哪个最好?
【发布时间】:2011-01-23 09:26:47
【问题描述】:

我正在寻找在 asp.net 应用程序范围内使用静态类的这 3 种方式之间的差异。 所有这些都指向同一个类吗? 在 global.asax 或静态类中以声明方式定义的 >object

例子:

<object runat="server" scope="application" class="classname" ID="objID"></object>

VS

public static class classname {}

VS

Application("a") = new classname();

【问题讨论】:

  • 您的意思能再清楚一点吗?也许是一些代码 sn-ps in 问题,因为我无法按原样制作标题的开头或结尾! =)
  • 对,标题看不懂……

标签: c# asp.net class static global-variables


【解决方案1】:

我假设您的编辑意味着:

在 global.asax.cs 中:

Application["a"] = new classname();

在类名.cs中

public static class classname {}

在这种情况下,除了(classname)Application["a"] 将引用类名类的 instance 之外,它们大致相同,而在第二个示例中,任何对 classname.MethodNameGoesHere() 的调用都将正在调用类名类的静态方法。

我会选择静态类的静态方法,而不是存储在 Application 中的实例的方法,尽管我会非常仔细地考虑类名中的方法的作用,因为它们可能会同时被多次调用人们可能会同时访问该网站。

【讨论】:

  • 是的,Application["a"] 最不受欢迎。在 global.asax 中使用 怎么样。这与静态类有何不同?
  • 它在功能上与 我认为 使用 Application["a"] 相同,所以我不赞成它 - 不清楚,也不是特别知名这样做的方式,要么! :)
  • 据我所知,使用 Application["a"] 是最不利的,因为您访问的是一个大哈希表而不是直接静态对象。这是 asp 时代的遗留物。
  • 所以问题仍然存在, 在 global.asax 或静态类中。哪一个最好,为什么?
  • @newbe - 由于 global.asax 中的标记在功能上等同于 Application["a"] = new classname(),正如我在第一条评论中所说,我不赞成它.因此,我会选择静态课程。那是个人喜好。它也似乎更正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 2016-05-17
  • 1970-01-01
相关资源
最近更新 更多