不确定“页面变量”是否是正确的单词,但我正在考虑这样的事情:
using System;
.
.
.
namespace whatever
{
public partial class Submit : Page
{
int id;
protected void Page_Load()
{
id = getid();
}
.
.
.
显然我稍后会使用id
(而不是在PageLoad中)。看起来好像每次都要通过逻辑来获取它更好。这样做有什么缺点吗?
答案 0 :(得分:2)
完全有效且正常。您可能希望将字段声明为受保护字段,以便可以从标记中使用它们。
答案 1 :(得分:1)
逻辑应与类变量相同,如果id
生成成本高,则将其保存在页面变量中。
除非您希望它在Post Posts中保留,否则您可以使用Session
对象来保存值。例如Session["key_to_object"] = id;
答案 2 :(得分:1)
您正在寻找的术语是范围。不,这里没有任何错误,特别是这种用法看起来非常合适。每次使用它时,使用您的函数重新获取ID是低效的,并且使用范围适用于整个类。
一般来说,范围应由谁需要使用变量确定,在某种程度上,正如@Y Low所说,创建它的成本。也就是说,有时你可能想要声明函数范围之外的东西,即使函数是它被使用的唯一地方。
例如,如果你的类中有一个被调用数千次的函数(比如,以某种特殊的方式将值格式化为字符串),并且需要在内部声明一些变量,那么它会更高效在函数外部声明它们,并在每次调用函数时减少开销。
那可能是TMI。无论如何,在你的情况下,因为你说“id”在类范围中使用了其他地方,所以在那里定义它是完全合适的。