“-+”运算符 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
我刚刚在我的代码中发现了非常奇怪的东西。我错误地把这样的东西作为索引:
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