如何从另一个类访问已赋值的公共属性值?
嘿,我完全懂你的困扰——你想在ClassTwo里拿到ClassOne中被MyMethod设置的ID值22,但现在每次新建ClassOne实例,ID都是默认的0,因为根本没触发赋值的逻辑对吧?下面给你几个可行的解决方案,你可以根据自己的实际场景选:
方案1:手动调用赋值方法
这是最直接的方式,既然ID是在MyMethod里赋值的,那创建实例后先调用这个方法就行:
public class ClassTwo { public void MyLocalMethod() { ClassOne OriginalClass = new ClassOne(); OriginalClass.MyMethod(); // 先触发ID的赋值逻辑 var LocalID = OriginalClass.ID; // 现在LocalID就是22啦 } }
方案2:在构造函数里初始化ID
如果这个ID的默认值就是22,不需要通过方法触发,那直接把赋值逻辑放到ClassOne的构造函数里,实例一创建ID就会被设置:
public partial class ClassOne { private int iD; public int ID { get { return iD; } set { iD = value; } } // 构造函数里直接初始化ID public ClassOne() { ID = 22; } public void MyMethod() { // 如果这个方法还有其他逻辑可以保留,否则也可以删掉 ID = 22; } } public class ClassTwo { public void MyLocalMethod() { ClassOne OriginalClass = new ClassOne(); var LocalID = OriginalClass.ID; // 现在直接就是22了 } }
方案3:用单例模式共享同一个实例
如果你的ClassOne在整个程序里只需要一个实例,那可以用单例模式,这样不管在哪调用,都是同一个已经设置好ID的实例:
public partial class ClassOne { private static ClassOne _instance; private int iD; public int ID { get { return iD; } set { iD = value; } } // 私有构造函数,防止外部随意新建实例 private ClassOne() {} public static ClassOne GetInstance() { if (_instance == null) { _instance = new ClassOne(); _instance.MyMethod(); // 初始化时就设置好ID } return _instance; } public void MyMethod() { ID = 22; } } public class ClassTwo { public void MyLocalMethod() { ClassOne OriginalClass = ClassOne.GetInstance(); var LocalID = OriginalClass.ID; // 这里拿到的就是22 } }
方案4:传递已初始化的实例
如果在程序的其他地方已经存在一个调用过MyMethod的ClassOne实例,那直接把这个实例传给ClassTwo的方法就行,不用新建:
// 假设在某个地方已经创建并初始化了ClassOne实例 ClassOne existingInstance = new ClassOne(); existingInstance.MyMethod(); // 修改ClassTwo的方法,接收已有的实例 public class ClassTwo { public void MyLocalMethod(ClassOne existingClassOne) { var LocalID = existingClassOne.ID; // 这里就是22了 } } // 调用ClassTwo的方法时传入实例 ClassTwo classTwo = new ClassTwo(); classTwo.MyLocalMethod(existingInstance);
为啥你的原代码不行?
你每次new ClassOne()都会创建一个全新的实例,这个新实例的ID还没被MyMethod赋值过,所以是int类型的默认值0,而不是22。核心逻辑就是:必须确保你使用的ClassOne实例已经执行过ID的赋值操作,才能拿到22这个值。
内容的提问来源于stack exchange,提问作者mjordan
相关产品推荐
相关产品推荐

