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 ストレージの場所、プロパティ、またはインデクサーを示す式。

最初の形式は、プレフィックスのインクリメント操作です。演算の結果は、インクリメントされた後のオペランドの値です。

2 番目の形式は、後置インクリメント操作です。演算の結果は、インクリメントされる前のオペランドの値です。

編集: これは 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 減らしてから、減分された値に評価します。したがって、指定した例では、コンストラクターはtempKey0 から -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影響はありません。変数名の前にマイナス記号を 1 つ付けると、値が無効になります。変数名の前にマイナス記号が 2 つ続くと、値が 2 回否定され、元の値に戻ります。例えば:

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--。最初の形式は、接頭辞のデクリメント操作です。演算の結果は、デクリメントされた「後の」オペランドの値です。2 番目の形式は、後置デクリメント操作です。演算の結果は、デクリメントされる「前の」オペランドの値です。

于 2012-10-08T20:48:51.893 に答える
0

これはプレデクリメント演算子です。実際には、tempKey から 1 を減算します。したがって、コンストラクター MyClass が最初に呼び出されると、tempKey はその値を -1 に変更し、次に this.Key は値 -1 を取得します。tempKey は静的であるため、以降のコンストラクターの呼び出しごとに tempKey が減少します。

于 2012-10-08T20:52:35.793 に答える
0

-- 演算子は減算演算子です。この場合、tempKey 変数から 1 が減算されます。これは変数の前にあるため、最初に値を減算してから this.Key 値に戻します。変数 tempkey の後だった場合は、値を this.Key に戻した後で値を減算します。

于 2012-10-08T20:50:14.753 に答える
0

--i数値を減分し、減分された結果を返しますが、i--数値も減分しますが、減分前の結果を返します。

于 2012-10-08T20:50:25.670 に答える