我有这个示例代码
public class MyClass
{
private static int tempKey = 0;
public MyClass()
{
this.Key = --tempKey;
}
public int Key {get; set;}
}
--tempkey 究竟做了什么?
我有这个示例代码
public class MyClass
{
private static int tempKey = 0;
public MyClass()
{
this.Key = --tempKey;
}
public int Key {get; set;}
}
--tempkey 究竟做了什么?
它递减tempKey
并返回新值。与 比较tempKey--
,它也会递减 tempKey,但返回原始值。
请参阅此处的Microsoft 文档。
自增运算符 (++) 将其操作数加 1。自增运算符可以出现在其操作数之前或之后:
++ var
var ++
在哪里:
var 表示存储位置或属性或索引器的表达式。
第一种形式是前缀递增操作。操作的结果是操作数增加后的值。
第二种形式是后缀递增操作。操作的结果是操作数在递增之前的值。
编辑:这对 C# 有效。Visual Basic 没有这个递增/递减运算符。
在 Visual Basic--tempKey
中,计算-1 * (-1 * tempKey)
结果等于tempKey
.
“--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
它将变量减 1,然后计算为减量后的值。因此,在您给出的示例中,构造函数将从 0 递减tempKey
到 -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
。
它从 tempkey 的值中减去 1。
更多信息可以在这里找到:http: //msdn.microsoft.com/en-us/library/6a71f45d.aspx
具体来说,来自http://msdn.microsoft.com/en-us/library/wc3z3k8c.aspx
减量运算符 (--) 将其操作数减 1。减量运算符可以出现在其操作数之前或之后:--variable 和 variable--。第一种形式是前缀递减操作。操作的结果是操作数“在”它被递减之后的值。第二种形式是后缀减量操作。操作的结果是操作数“之前”被递减的值。
-- 运算符是减法运算符。在这种情况下,它从 tempKey 变量中减去 1。因为在变量之前,所以先减去值,再返回到 this.Key 值。如果它在变量 tempkey-- 之后,那么它会在将值返回到 this.Key 之后减去该值。
--i
递减数字并返回递减的结果,同时i--
也会递减数字,但返回递减前的结果。
它是一个预减运算符。实际上,它从 tempKey 中减去一个。因此,当第一次调用构造函数 MyClass 时, tempKey 将其值更改为 -1,然后 this.Key 获得值 -1。由于 tempKey 是静态的,因此对构造函数的每次后续调用都会递减 tempKey。