gpt4 book ai didi

c# - 类级变量/对象是否可以接受?

转载 作者:太空狗 更新时间:2023-10-30 01:24:20 25 4
gpt4 key购买 nike

我有一个使用 asp.net 构建的简单网站。它通常一次只有 1 或 2 个用户。我的问题是,在类级别实例化一个类是否可以,或者我应该为每个方法实例化。这是一个例子。我有一个名为 Host 的类,带有名称字段和 mac 字段。在我针对特定页面的代码中,是否可以这样做:

public partial class addhosts : Page
{
private Host host = new Host();
private HostDal dal = new HostDal();

protected void myMethod()
{
host.Name = "myname"
host.Mac = "mymac"
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
dal.AddHost(host)
}
}

最佳答案

首先,您所指的通常是 globallocal 变量。

在您列出的简单情况下,最好在提交点击时创建变量。原因是如果用户加载对象,但从未调用提交点击,那么您在不需要时在内存中实例化了宿主对象。

但是,正如许多人所说,这里应该真的不管怎样。但是,这又是一个简单的例子。全局变量可能是危险的并且经常被避免,因为它们可以在你的类中的任何地方被修改。如果一个方法期望某个值然后被覆盖,这可能会导致更复杂的示例中难以调试的问题

Here is a wikipedia article这重申了我的上述观点:

They are usually considered bad practice precisely because of their non-locality: a global variable can potentially be modified from anywhere (unless they reside in protected memory or are otherwise rendered read-only), and any part of the program may depend on it

要摆脱全局变量,您可以这样做(使用对象初始值设定项)

protected void btnSubmit_Click(object sender, EventArgs e)
{
var host = new Host
{
Name = "myname",
Mac = "mymac"
};
dal.AddHost(host)
}

关于c# - 类级变量/对象是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775067/

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