You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过类的方法修改调用实例的属性值?求技术解答

嘿,我来帮你把这个思路理顺清楚~

问题核心误区拆解

你现在卡住的根源在于在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:19:22