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

为何Test类的SolveAsync方法可访问Program类的私有方法与属性?

问题解答

Test类并没有直接访问Program类的私有成员,本质是代码的作用域和委托执行逻辑的区别:

  • lambda表达式的定义位置决定了它的访问权限
    在Program类的Main方法里,你定义的getter是一个lambda表达式:async () => await Get();。这个lambda是在Program类内部创建的,根据C#的私有访问规则,同一类内部的代码可以自由访问自身的私有成员,所以它能调用私有方法Get,也能读取私有静态属性y。

  • Test类只是触发委托执行,而非直接访问私有成员
    Test类的SolveAsync方法只是接收了这个委托参数,然后调用它。真正执行Get方法和访问y的是那个lambda表达式,而lambda的执行上下文依然属于Program类的作用域,Test类全程没有直接去碰Program的私有成员。

总结:权限看的是代码定义在哪里,不是在哪里被调用。lambda在Program里定义,所以有访问私有成员的权限,Test只是帮着触发它执行罢了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:02:10