我有:
- MyNameSpace.MyClass1
- MyNameSpace.MyClass2
醇>
我需要从MyClass2中获取MyClass1.myvar1的值。 我应该用静态变量吗
如果变量值在Web应用程序中是静态的,会发生什么。
我使用MyClass1作为:var mClass=new MyNameSpace.MyClass1()
,并使用mClass。
谢谢
答案 0 :(得分:3)
不,你不应该在这里使用静态变量。请记住,static
表示变量是应用程序的全局变量。在ASP.Net中,您有一个应用程序实例,在访问您站点的每个人之间共享。使用静态变量可能导致一个用户看到另一个用户的数据。
答案 1 :(得分:2)
如果值上下文是全局的,则可以使用静态变量。请记住,如果值已更新,则会为所有用户更新该值。如果数据不同或属于用户,则永远不要使用静态,而是在MyClass1
方法中实例化MyClass2
对象。
您可以使用以下方法。
将MyClass1.myvar1
声明为公开,并从MyClass2
进行访问。
class MyClass1{
public int myvar1 = 7;
}
class MyClass2{
public void TestMethod(){
MyClass1 obj = new MyClass1();
int val = obj.myvar1;
}
}
在这种情况下,您的数据是安全的。
答案 2 :(得分:1)
在ASP.NET中使用静态变量是不行的,除非您考虑到线程安全性。单个请求通常在单个线程上运行。不同的请求可能会在不同的线程上运行。 (有关一些好的线程信息,请参阅http://blogs.msdn.com/b/tmarq/archive/2010/04/14/performing-asynchronous-work-or-tasks-in-asp-net-applications.aspx。)
除非你研究编写线程安全代码,否则我会考虑使用以下对象来维护静态数据:
答案 3 :(得分:0)
所有您需要的是创建 class2 的新实例,并从 class1 中的已创建实例调用您的变量,如
myclass1
{
string Variable = string.empty;
protected void YourMethod()
{
myclass2 c2 = new myclass2()
this.Variable = c2.Variable;
}
}