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

C#中返回新对象的自动属性每次获取都会创建新对象吗?

C#表达式体属性相关问题解答

1. 每次访问该属性时,都会创建新的MyStruct(或类实例)吗?

是的,每次访问这个Struct属性时,都会生成一个新的MyStruct实例。因为属性的get逻辑是直接返回new MyStruct(this),每次调用get访问器都会执行这条实例化语句。如果换成类类型,每次访问同样会创建新的类实例。

2. 这段代码编译后对应的代码是什么?

这段简写代码会被编译成带get访问器的只读属性,等效于以下完整写法:

public MyStruct Struct
{
    get
    {
        return new MyStruct(this);
    }
}

在IL(中间语言)层面,会生成一个仅包含get方法的属性,每次调用该get方法时,都会执行实例化MyStruct的逻辑。

3. 这种属性简写的官方名称是什么?

这种写法的官方名称是表达式体属性(Expression-bodied property),它是C# 6版本引入的语法糖,用于简化只读属性的定义,让代码更简洁紧凑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:04:51