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

含副作用方法的C#对象字段初始化顺序是否有明确保证?

C#对象初始化器的成员赋值顺序问题

绝对保证X会在Y之前完成读取与初始化。

C#语言规范明确规定,对象初始化器中的成员赋值操作严格按照代码书写的顺序依次执行,不存在类似C++中方法参数求值顺序不确定的情况。在你给出的代码场景里:

public class foo
{
    private ECPoint point = new ECPoint() {
        X = MethodCall(),
        Y = MethodCall()
    }
}

X = MethodCall()会先被执行,完成ECPoint实例的X字段初始化后,才会执行Y = MethodCall()。两次MethodCall()的调用顺序完全由代码中的书写顺序决定,不会出现乱序执行的情况,因此你可以放心依赖这个顺序来处理MemoryStream的指针移动逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:04:50