gpt4 book ai didi

c# - 在哪里声明类

转载 作者:太空狗 更新时间:2023-10-30 00:57:26 26 4
gpt4 key购买 nike

我有一大堆与类的实例交互的方法。现在我在页面加载时对其进行了初始化(从 session 中转换)。代码与此类似(为示例而简化):

protected void Page_Load(object sender, EventArgs e)
{
if(!isPostBack)
{
MyClass myClass = (MyClass)Session["myClass"];
myMethod1(myClass);
myMethod1(myClass);
}
}

private void myMethod1(MyClass class)
{
}

private void myMethod2(MyClass class)
{
}

这是正确的方法吗,还是在页面后面的类中将其声明为“全局”而不是将其从一个方法传递到另一个方法会更好。

编辑

我想我真正的问题是:将它传递给方法(因为我假设它每次都被重新初始化)与在代码隐藏页面类中将其声明为公共(public)类相比是否存在性能缺陷。如果它在页面后面的代码中声明为 public,那么我假设它在页面被请求时被初始化一次。

最佳答案

这是一个关于变量作用域和生命周期的问题。变量的“作用域”是可以无限制地引用变量的程序文本,“生命周期”是变量有效的持续时间。

一般来说,最好尽可能地限制变量的范围。这使得对代码的推理变得更加容易。

在给出的示例代码中,有三个变量,每个变量的作用域都限定在它们出现的各个方法中。这是一件好事。假设方法的名称是准确的,您可以一目了然地看到该值所发生的一切。

相比之下,如果您通过将变量设为页面上的字段来扩大变量的范围,则该页面上的所有方法都可以访问该变量。可能很难推断出它的生成位置、变异方式以及用途。这使得应用程序的 future 维护更加困难。

因此,我的建议是只要有可能,就按照您在这里所做的那样继续做。

编辑

针对问题的澄清:

性能无关紧要。你在谈论网络服务器上的纳秒。 Web 应用程序受到网络或 Internet 上流量的限制。这些选项中的任何一个关于变量去向的性能都不会有明显差异。

一般来说,性能是针对大型对象集合的算法和数据结构的问题。在这些没有大型数据结构的情况下,人类看不出任何差异。

代码应该首先被设计成正确的、可理解的和可维护的。一旦做到这一点,那么只有当它被证明是一个问题时,性能才是一个问题。

另一个编辑

如果 MyClass 是一个 class 而不是 struct 那么代码中属于该类型的三个变量的大小仅为单个引用(3​​2 位或 64 位,取决于平台)。它们所引用的对象仅在给定的代码示例中创建一次。

关于c# - 在哪里声明类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5238238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com