gpt4 book ai didi

c# - 求值顺序、实例和方法参数

转载 作者:行者123 更新时间:2023-11-30 20:50:24 27 4
gpt4 key购买 nike

假设我写了下面的代码:

int x = 42;

if (x.Equals(x = Foo()))
Console.WriteLine("ok");

Foo 是任何返回整数的方法。是否保证方法调用目标(第一个 x)在 Foo() 的返回值替换之前求值?换句话说,当且仅当 Foo() 的返回值等于 42 时,这段代码是否保证打印 ok

我见过其他处理参数评估顺序的问题,但它们没有讨论实例(第一个 x)在运行时对非静态方法进行评估的时间 --有人可以为我澄清一下吗?

最佳答案

这是一个名为 Sequence Points 的问题.这通常代表会发生什么when you put increment operator inside an expression .

在 C# 的情况下,严格定义表达式和 method parameters从左到右,从内到外计算,任何赋值(和一般的副作用)对于表达式的其余部分都是立即可见的。

您可以阅读更多 here .

关于c# - 求值顺序、实例和方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com