c# -++(或--)运算符返回什么?

标签 c# operators

<分区>

在使用 ++ 运算符时,我尝试编写以下内容:

++i++;

一开始我希望它能编译,但我遇到了一个编译器错误:

The operand of an increment or decrement operator must be a variable, property or indexer.

然后我尝试编写 ++(i++) 来帮助编译器理解我的意思,但它也(不出所料)不起作用。

所以我想知道 ++ 运算符返回什么?由于出现编译器错误,我期望 ++i 不会返回表示 i 递增值的 int,但这也是不是这样,因为我可以成功地执行 i = (++i) + 1...

有人知道为什么不能链接 ++ 运算符吗?

此外,(++i).GetType() 确实返回 System.Int32

最佳答案

在 C# 中 ++ operator返回递增之前(对于 i++)或之后(对于 ++i)递增的

您看到的错误是因为该运算符只能用于变量、属性或索引器原因 是因为运算符的意图是增加被引用的变量。您不能在表达式或其他类型上使用它。 (9++) 会做什么?

你期望(i++)++等同于i++;我++。但是 i++ 返回一个 value 并在内部递增 i。由于您不能将++ 运算符应用于,因此无法进行链接。

C++ 中的不同之处在于++ prefix 运算符将一个 reference 作为输入,并返回一个 reference 到原始值,因此您可以链接运算符,因为它只是使用指针而不是值。 postfix 运算符返回一个值,因此不能链接。

关于c# -++(或--)运算符返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918140/

相关文章:

c# - 使用 Mono C# 的 QueueUserWorkItem() 性能问题

c# - Emgu - CalcHist _rowRange 错误

c++ - 无法理解 C++ 中的这段代码(运算符 &)

mysql - OR 运算符忽略 AND 运算符 MYSQL

haskell - 函数在参数后面写函数

用于检查文件扩展名的 Javascript If 语句不起作用

c# - ASP.NET MVC3中不同区域的自定义错误页面

C# + MySQL prepared statement w/ON DUPLICATE KEY UPDATE 问题

java - 将在运算符条件下循环的程序

c# - 如何创建 IOptions<MyOption> 的模拟实例?