C#int i = +1是什么意思?

时间:2018-08-07 15:47:39

标签: c#

我在浏览堆栈溢出时遇到了这个问题:

check for duplicate filename when copying files in C#

在这个问题中,这个小宝石存在:

int i = +1

我以前从未见过这种语法。因此,我在Visual Studio中打开了交互式C#窗口:

Microsoft (R) Roslyn C# Compiler version 1.3.4.60902
Loading context from 'CSharpInteractive.rsp'.
Type "#help" for more information.

> int i = +1;
> i
1
> +1 == 1
true

这类似于+=吗?这是一些新语法吗?这个算子是什么?与普通变量声明有何不同?

3 个答案:

答案 0 :(得分:10)

那就是unary plus operator。从文档中:

  

对数字类型进行一元+运算的结果就是操作数的值。

在大多数您编写代码的 s 上下文 1 中,它是可选的(+11相同我们正在写文字。)

主要是为了与一元减算符对称。

在大多数情况下,您不会编写包含该代码的代码,但是如果您正在生成 代码,则可以方便地以任一方式应用一元运算符 2 < / sup>。

它与+=没有关系。


1 疯狂的代码可能会针对自定义类型覆盖此运算符,并使其超出无操作范围。但是我很想了解一个使代码更易于理解的用例,这应该是大多数代码的主要目标。

2 例如假设您将一组操作链接在一起,并且对于每个其他元素,您希望更改整体结果的符号。这样一来,您只需存储一个运算符并在最终决定输出结果时盲目地应用它即可。

答案 1 :(得分:3)

对于所有带符号的数字类型,正号是可选的。所以,

+1 == (+1) == 1
+1.0 == (+1.0) == 1.0
+1L == (+1L) == 1L
+1.0m == (+1.0m) == 1.0m

请勿混淆

int i = +1; // Assigns 1

相同
int i = (+1); // Assigns 1

或者简单地

int i = 1; // Assigns 1

使用

int i += 1; // INCREMENT!

i递增。


在C#术语中,有一个二进制+运算符(如int i = 3 + 4;中的加法运算符)和一元+运算符(如int i = +1;中的加号)。

答案 2 :(得分:2)

以您的方式思考

int i = -1

它变得明显