【问题标题】:C# What does int i = +1 mean?C# int i = +1 是什么意思?
【发布时间】:2018-08-07 15:47:38
【问题描述】:

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

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

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

【问题讨论】:

  • 一个有趣的注释,在您链接的示例问题中,他们错误地使用了这个。他们试图增加一个整数变量(如他们在使用+1 的行上方的评论中所见)。
  • @LewsTherin:没有那么多“有趣的注释” - 这是链接问题中问题的原因 - 尽管接受的答案并没有完全清楚。

标签: c#


【解决方案1】:

那是unary plus operator。来自文档:

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

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

它主要是为了与一元减号运算符对称而存在。

大多数时候,您不会编写包含它的代码,但如果您正在生成代码,那么无论哪种方式都可以应用一元运算符会很方便2.

+=无关。


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

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

【讨论】:

  • 不带行话也可以这样说:“这是一个可选的正号。与负号相反。”
  • 我不是在和你争论,你没有错。我要说的是,这个网站可供各种经验水平的人浏览。 “一元加运算符”对初学者甚至大多数中级开发人员来说意义不大。我只是想为那些还不会说流利的开发人员的人简化你的解释。
  • @LewsTherin - 我试图在答案中添加一些说明,这可能会让更多读者利用答案?我仍然想确保答案解决了所写的问题,但如果可以改进,请告诉我。
  • @LewsTherin:我认为重要的是要理解“+”不是可选符号,而是实际上是一个运算符,因为它可以应用于变量和常量——在下面的 + & - 充当运算符 "int a = 1; Console.WriteLine( +a ); Console.WriteLine( -a );"
  • @Damien_The_Unbeliever 谢谢,我认为您的编辑让我们更容易理解。
【解决方案2】:

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

+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;)。

【讨论】:

    【解决方案3】:

    按照你的想法考虑

    int i = -1
    

    这很明显

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-18
      • 2020-05-24
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      相关资源
      最近更新 更多