“-+”运算符 c# MONO 2.10.12

"-+" operator c# MONO 2.10.12

我刚刚在我的代码中发现了非常奇怪的东西。我错误地把这样的东西作为索引:

int a = 1;
int b = 1;

Dictionary<int, SomeClass> dic = new Dictionary<int, SomeClass> ();

dic[a -+ b].Field = 0;

如您所见,“-+”运算符实际上起到了“-”的作用。 不管怎样,代码玩得很开心,一直在编译,直到我找到它。

它是我现在正在开发的游戏的 Unity3d 代码的一部分。

问题是:正常吗?或者这是 mono 2 中的已知错误并已修复。我找不到任何相关信息。

这没什么奇怪的,而且没有 -+ 运算符。有一个一元 + 运算符和一个二元 - 运算符。只需添加括号和一些间距以使其更清晰:

int a = 1;
int b = 1;
int c = a -+ b;
int d = a - (+b); // Same as above

请注意,您也可以使用 +- 一元运算符 - 和二元运算符 +

int e = a +- b;
int f = a + (-b); // Same as above

虽然您不能像这样使用 ++--,因为它们确实 单独的运算符,您可以添加一个 space:

int g = a + + b;
int h = a + (+b); // Same as above

int i = a - - b;
int j = a - (-b); // Same as above

您还可以将多个一元运算符链接在一起,这真的很疯狂:

int k = a +-+-+-+ b;
int l = a + (-(+(-(+(-(+b)))))); // Same as above