我有一个使用 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)
}
}
最佳答案
首先,您所指的通常是 global
与 local
变量。
在您列出的简单情况下,最好在提交点击时创建变量。原因是如果用户加载对象,但从未调用提交点击,那么您在不需要时在内存中实例化了宿主对象。
但是,正如许多人所说,这里应该真的不管怎样。但是,这又是一个简单的例子。全局变量可能是危险的并且经常被避免,因为它们可以在你的类中的任何地方被修改。如果一个方法期望某个值然后被覆盖,这可能会导致更复杂的示例中难以调试的问题
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/