&引用-+&引用;操作员c#MONO 2.10.12
我只是在我的代码中发现了很奇怪的东西。我错误地将以下内容作为索引:&引用-+&引用;操作员c#MONO 2.10.12,c#,mono,C#,Mono,我只是在我的代码中发现了很奇怪的东西。我错误地将以下内容作为索引: int a = 1; int b = 1; Dictionary<int, SomeClass> dic = new Dictionary<int, SomeClass> (); dic[a -+ b].Field = 0; inta=1; int b=1; Dictionary dic=新字典(); dic[a-+b]。字段=0; 正如您所看到的,有一个“-+”运算符真正起到了“-”的作用。 不
int a = 1;
int b = 1;
Dictionary<int, SomeClass> dic = new Dictionary<int, SomeClass> ();
dic[a -+ b].Field = 0;
inta=1;
int b=1;
Dictionary dic=新字典();
dic[a-+b]。字段=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
虽然不能像这样使用++
或--
,因为它们实际上是独立的运算符,但可以添加一个空格:
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
a-+-+-+-+-+-+-+-b
也有效。但是没有+-
操作符。这只是+,-的组合。只要将间距设置正确,就可以看到它是正确的:dic[a-+b]。字段=0代码>使用dic[a--b]将其更改。字段
。使用goes to操作符使团队成员晕眩:var huh=a-->b代码>一元+运算符可能被排除在语言之外,很少有程序员会错过它:)你应该得到一个新的徽章,因为第一个代表需要两行代码