【发布时间】:2014-11-30 11:37:03
【问题描述】:
我有一个简单的 C# 类。
在这个类中,我有一个对象,它在类本身的构造函数中初始化。
我对这个类的属性做了一些修改/更新(我已经逐步调试了)。
从另一个类,我想更新这个对象,所以我做了一个静态方法,它返回这个对象。
但是当我调用这个方法时,我得到的对象是初始值,而不是新值。为什么?这是错的吗?我怎样才能得到它?
这是我的代码的简化版本:
public class class1
{
private static MyObject p_var;
public MyObject MyVar
{
get { return p_var; }
set { p_var= value; }
}
public static MyVar getVar(){
MyVar w = p_var;
return w;
}
public class1() {
Debug.WriteLine("kjkjkj");
MyVar= new MyObject ();
MyVar.attr1 = "test init";
}
}
示例:如果我从另一个类调用 getVar,我会得到带有 attr1 值的 MyVar 对象,例如“test init”,而不是新的修改后的 valuel。
【问题讨论】:
-
编写示例代码时出错..现在正确了,谢谢!
-
你没有初始化p_var,这个代码示例中没有描述attr1
-
@PieroAlberto 无法专注于这个问题,因为这个问题是错误的并且没有意义...
p_var永远不会设置...你在哪里设置p_var?跨度> -
@PieroAlberto 感谢更新伙伴...我想知道
w是什么 -
如果我猜对了,OP 正在尝试创建 Class1 的新实例,该实例再次调用构造函数并重新初始化私有静态对象的初始值
标签: c# class static return non-static