C#中的“ - ”代表什么,以及它在VB中的作用

时间:2012-10-08 20:47:49

标签: c# vb.net visual-studio-2010

我有这个示例代码

public class MyClass
{
    private static int tempKey = 0;

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

--tempkey究竟做了什么?

7 个答案:

答案 0 :(得分:10)

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

请参阅Microsoft文档here

  

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

--tempKey

其中:

  

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

     

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

     

第二种形式是后缀增量操作。结果   operation是操作数增加之前的值。

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

在Visual Basic -1 * (-1 * tempKey)中评估为tempKey,等于{{1}}。

enter image description here

答案 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。