C#中创建匿名对象时能否读取已定义的属性?
C#匿名对象创建时能否读取已定义属性?
不能。你示例代码里的this.PropA并不会引用正在创建的匿名对象的PropA属性,而是会访问当前外部类实例的PropA成员(如果外部类存在这个成员的话)。
原因很简单:匿名对象的属性初始化过程中,对象本身还未完成实例化,不存在可访问的实例引用。每个属性的初始化表达式都是独立计算的,它们之间无法互相引用同一个匿名对象内的其他属性——因为这个对象此时还没被创建出来。
如果需要复用属性值,有两种常见的替代方式:
- 使用临时变量存储需要复用的值,再在匿名对象中引用:
var propAValue = "something"; var a = new { PropA = propAValue, PropB = propAValue + " and another thing" };
- 如果逻辑较复杂,也可以考虑定义一个具名类来替代匿名对象,这样可以更灵活地处理属性间的依赖关系。
内容的提问来源于stack exchange,提问作者big boy
相关产品推荐
相关产品推荐

