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

实例化类时如何在Action初始化中调用类的String字段?

嘿,这个问题其实挺典型的,咱们直接说可行的解决办法——不用先存好实例再去设置action,直接在构造函数里就能搞定!

核心思路:利用构造函数初始化Action

在C#里,构造函数执行的时候,当前实例已经处于创建过程中,this引用是有效的,所以你可以直接在构造函数里给action赋值,让它捕获当前实例的text字段。这样action在后续调用时,就能直接访问到这个实例的text值(哪怕后续text被修改,也会取最新的值)。

代码示例:

public class ExampleClass
{
    public string text;
    public Action action;

    // 构造函数:初始化text和action
    public ExampleClass(string initialText)
    {
        text = initialText;
        // 这里直接引用text字段(加this更清晰,也可以省略)
        action = () => 
        {
            // 这里可以任意使用text字段,比如打印内容
            Console.WriteLine($"当前text的内容是:{text}");
        };

        // 如果想在实例化完成后自动调用action,直接加这行
        action.Invoke();
    }
}

为什么字段初始化器不行?

如果你尝试直接在字段定义时初始化action,比如下面这种写法:

// ❌ 编译报错!字段初始化阶段无法访问实例成员
public Action action = () => Console.WriteLine(text);

这会编译失败,因为字段初始化器是在构造函数执行之前运行的,此时实例还没完全创建,无法访问text这类实例字段,所以必须放到构造函数里处理。

使用验证

你可以这样测试效果:

// 创建实例,此时构造函数里会自动调用action,输出初始text
var myExample = new ExampleClass("我是初始文本");

// 修改text后再调用action
myExample.text = "我被修改啦!";
myExample.action.Invoke(); // 输出修改后的内容

这样就完美实现了在初始化action时直接使用类的text字段的需求,不需要额外先存储实例再设置action~

内容的提问来源于stack exchange,提问作者Kontorted

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:26:21