gpt4 book ai didi

c# - 在执行后缀 C# operator++ 时,有什么保证(如果有的话)?

转载 作者:太空宇宙 更新时间:2023-11-03 12:47:58 25 4
gpt4 key购买 nike

我希望下面的程序打印 method 后跟 ++ 但是相反的情况发生了;我希望增量运算符在使用后缀时在调用 Method 之后执行,但实际上它在调用之前执行。

using static System.Console;

struct Test {

public static Test operator ++(Test source) {
WriteLine("++");
return source;
}

static void Method(Test value) => WriteLine("Method");

static void Main(string[] args) {
var test = new Test();
Method(test++);
}
}

最佳答案

这当然不是错误。当您开始将多个表达式嵌套在一起时,它们仍将按逻辑顺序执行。

举一个更明显的例子:

DateTime.Parse(Console.ReadLine());

我所做的只是删除 Console.ReadLine 将返回的临时字符串变量的赋值,然后传递给 DateTime.Parse。但这仍然是完全有效的语法,因为 Console.ReadLine 评估为 string - DateTime.Parse 用作参数的类型。

这里没有魔法。编译器知道必须完全实现内部表达式才能评估外部表达式。

看看 Doc on Expressions寻求更多帮助

关于c# - 在执行后缀 C# operator++ 时,有什么保证(如果有的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587380/

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