我在浏览堆栈溢出时遇到了这个问题:
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
这类似于+=
吗?这是一些新语法吗?这个算子是什么?与普通变量声明有何不同?
答案 0 :(得分:10)
那就是unary plus operator。从文档中:
对数字类型进行一元+运算的结果就是操作数的值。
在大多数您编写代码的 s 上下文 1 中,它是可选的(+1
与1
相同我们正在写文字。)
主要是为了与一元减算符对称。
在大多数情况下,您不会编写包含该代码的代码,但是如果您正在生成 代码,则可以方便地以任一方式应用一元运算符 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
它变得明显