我有这个示例代码
public class MyClass
{
private static int tempKey = 0;
public MyClass()
{
this.Key = --tempKey;
}
public int Key {get; set;}
}
--tempkey究竟做了什么?
答案 0 :(得分:10)
它递减tempKey
并返回新值。与tempKey--
比较,++ var
var ++
也减少tempKey,但返回原始值。
请参阅Microsoft文档here。
增量运算符(++)将其操作数增加1.增量 运算符可以出现在其操作数之前或之后:
--tempKey
其中:
var表示存储位置或属性或表达式的表达式 索引。
第一种形式是前缀增量操作。的结果 操作是操作数之后的值 递增。
第二种形式是后缀增量操作。结果 operation是操作数增加之前的值。
编辑:这对C#有效。 Visual Basic没有此递增/递减运算符。
在Visual Basic -1 * (-1 * tempKey)
中评估为tempKey
,等于{{1}}。
答案 1 :(得分:6)
“ - x”是预递减算术运算符。这意味着在语句中使用之前,该值将减1。
int x = 10;
Console.WriteLine(--x); // This will print 9
“x--”是后递减算术运算符。意味着使用该值然后减1。
int x = 10;
Console.WriteLine(x--); // This will print 10
Console.WriteLine(x): // This will print 9
答案 2 :(得分:3)
将变量减1,然后计算减少的值。因此,在您给出的示例中,构造函数会将tempKey
从0递减到-1,然后将Key
设置为相同的值-1。例如:
int x = 5;
int y = --x; // x gets set to 4 and they y is also set to 4
int x2 = 5;
int y2 = x2--; // x2 gets set to 4 and then y gets set to 5 (x2's value prior to decrement)
VB中没有等效运算符。在VB中,--tempKey
没有任何影响。变量名前的单个减号将取消该值。在变量名称之前连续两个减号将两次取消该值,从而将其返回到原始值。例如:
Dim x As Integer = 5
Dim y As Integer = --x ' x still equals 5 and y also gets assigned 5
换句话说,它与说y = -1 * -1 * x
相同。
答案 3 :(得分:1)
它从tempkey的值中减去一个。
可以在此处找到更多信息:http://msdn.microsoft.com/en-us/library/6a71f45d.aspx
具体来说,来自http://msdn.microsoft.com/en-us/library/wc3z3k8c.aspx
递减运算符( - )将其操作数递减1.递减 运算符可以出现在其操作数之前或之后: - 变量和 变量 - 。第一种形式是前缀减量操作。结果 操作的值是“之后”的操作数的值 递减。第二种形式是后缀减量操作。该 操作的结果是操作数“之前”的值 已经减少。
答案 4 :(得分:0)
- 运算符是减法运算符。在这种情况下,它从tempKey变量中减去一个。因为它在变量之前,所以在将值返回到this.Key值之前,先减去该值。如果它在变量tempkey之后 - 那么它会在将值返回到this.Key之后减去该值。
答案 5 :(得分:0)
--i
递减数字并返回递减的结果,而i--
也递减数字,但返回预递减的结果。
答案 6 :(得分:0)
这是一个预减量运算符。实际上,它从tempKey中减去一个。因此,当首次调用构造函数MyClass时,tempKey将其值更改为-1,然后this.Key获取值-1。由于tempKey是静态的,因此每次后续的构造函数调用都会减少tempKey。