如何通过类的方法修改调用实例的属性值?求技术解答
嘿,我来帮你把这个思路理顺清楚~
问题核心误区拆解
你现在卡住的根源在于在Load方法里多余地复制了当前实例的引用:Zoo myZoo = this; 这个操作完全没必要,反而容易让自己混淆实例的指向。其实this关键字本身就代表当前正在调用Load方法的Zoo实例,直接用它来操作属性就够了。
修正后的代码示例
先调整Zoo类的Load方法,去掉多余的变量赋值,直接操作当前实例:
public class Zoo { public string ZooName { get; set; } internal void Load() { // 直接用this修改当前实例的ZooName属性 // 这里可以替换成你实际的赋值逻辑,比如从文件/数据库读取名称 this.ZooName = "Sunnydale Wildlife Zoo"; } }
你的Program类调用逻辑是没问题的,创建实例后调用Load,就能直接修改该实例的属性:
class Program { private void Initialize() { Zoo myZoo = new Zoo(); myZoo.Load(); // 调用后,myZoo的ZooName已经被修改 Console.WriteLine(myZoo.ZooName); // 会输出上面设置的"Sunnydale Wildlife Zoo" } }
关键知识点梳理
- 在类的实例方法中,
this永远指向当前调用该方法的那个实例对象。所以你在Load里对this.ZooName的修改,就是直接修改Program类里创建的myZoo实例的属性。 - 你之前写的
Zoo myZoo = this;只是把当前实例的引用复制给了一个局部变量,操作这个局部变量的属性和直接操作this效果完全一样,但属于冗余操作,还容易让自己误以为是在操作新的实例。
这样应该就能把你的思维卡点打通啦~
内容的提问来源于stack exchange,提问作者Marcel Grüger
相关产品推荐
相关产品推荐

