1

我有这个示例代码

public class MyClass
{
    private static int tempKey = 0;

    public MyClass()
    {
        this.Key = --tempKey;
    }
    public int Key {get; set;}
}

--tempkey 究竟做了什么?

4

7 回答 7

10

它递减tempKey并返回新值。与 比较tempKey--,它也会递减 tempKey,但返回原始值。

请参阅此处的Microsoft 文档。

自增运算符 (++) 将其操作数加 1。自增运算符可以出现在其操作数之前或之后:

++ var 
var ++ 

在哪里:

var 表示存储位置或属性或索引器的表达式。

第一种形式是前缀递增操作。操作的结果是操作数增加后的值。

第二种形式是后缀递增操作。操作的结果是操作数在递增之前的值。

编辑:这对 C# 有效。Visual Basic 没有这个递增/递减运算符。

在 Visual Basic--tempKey中,计算-1 * (-1 * tempKey)结果等于tempKey.

在此处输入图像描述

于 2012-10-08T20:49:15.873 回答
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
于 2012-10-08T21:29:18.960 回答
3

它将变量减 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

于 2012-10-08T20:50:11.897 回答
1

它从 tempkey 的值中减去 1。

更多信息可以在这里找到:http: //msdn.microsoft.com/en-us/library/6a71f45d.aspx

具体来说,来自http://msdn.microsoft.com/en-us/library/wc3z3k8c.aspx

减量运算符 (--) 将其操作数减 1。减量运算符可以出现在其操作数之前或之后:--variable 和 variable--。第一种形式是前缀递减操作。操作的结果是操作数“在”它被递减之后的值。第二种形式是后缀减量操作。操作的结果是操作数“之前”被递减的值。

于 2012-10-08T20:48:51.893 回答
0

-- 运算符是减法运算符。在这种情况下,它从 tempKey 变量中减去 1。因为在变量之前,所以先减去值,再返回到 this.Key 值。如果它在变量 tempkey-- 之​​后,那么它会在将值返回到 this.Key 之后减去该值。

于 2012-10-08T20:50:14.753 回答
0

--i递减数字并返回递减的结果,同时i--也会递减数字,但返回递减前的结果。

于 2012-10-08T20:50:25.670 回答
0

它是一个预减运算符。实际上,它从 tempKey 中减去一个。因此,当第一次调用构造函数 MyClass 时, tempKey 将其值更改为 -1,然后 this.Key 获得值 -1。由于 tempKey 是静态的,因此对构造函数的每次后续调用都会递减 tempKey。

于 2012-10-08T20:52:35.793 回答