在ASP.NET中声明页面变量是不是很糟糕?

时间:2010-10-27 17:32:49

标签: .net asp.net variables

不确定“页面变量”是否是正确的单词,但我正在考虑这样的事情:

using System;
.
.
.

namespace whatever
{
    public partial class Submit : Page
    {
       int id;
       protected void Page_Load()
       {
          id = getid();
       }
.
.
.

显然我稍后会使用id(而不是在PageLoad中)。看起来好像每次都要通过逻辑来获取它更好。这样做有什么缺点吗?

3 个答案:

答案 0 :(得分:2)

完全有效且正常。您可能希望将字段声明为受保护字段,以便可以从标记中使用它们。

答案 1 :(得分:1)

逻辑应与类变量相同,如果id生成成本高,则将其保存在页面变量中。

除非您希望它在Post Posts中保留,否则您可以使用Session对象来保存值。例如Session["key_to_object"] = id;

答案 2 :(得分:1)

您正在寻找的术语是范围。不,这里没有任何错误,特别是这种用法看起来非常合适。每次使用它时,使用您的函数重新获取ID是低效的,并且使用范围适用于整个类。

一般来说,范围应由谁需要使用变量确定,在某种程度上,正如@Y Low所说,创建它的成本。也就是说,有时你可能想要声明函数范围之外的东西,即使函数是它被使用的唯一地方。

例如,如果你的类中有一个被调用数千次的函数(比如,以某种特殊的方式将值格式化为字符串),并且需要在内部声明一些变量,那么它会更高效在函数外部声明它们,并在每次调用函数时减少开销。

那可能是TMI。无论如何,在你的情况下,因为你说“id”在类范围中使用了其他地方,所以在那里定义它是完全合适的。