これまでにこれを試したことがありますか?
static void Main(string[] args)
{
int x = 10;
x = x++;
Console.WriteLine(x);
}
出力: 10。
しかし
static void Main(string[] args)
{
int x = 10;
x++;
Console.WriteLine(x);
}
出力: 11。
なぜそうなるのか誰か説明できますか?
ベストアンサー1
X++ は値を増分しますが、その後古い値を返します。
この場合は次のようになります。
static void Main(string[] args)
{
int x = 10;
x = x++;
Console.WriteLine(x);
}
X は一瞬だけ 11 になりますが、その後 10 に戻ります。これは、10 が (x++) の戻り値であるためです。
同じ結果を得るために、代わりに次のようにすることもできます:
static int plusplus(ref int x)
{
int xOld = x;
x++;
return xOld;
}
static void Main(string[] args)
{
int x = 10;
x = plusplus(x);
Console.WriteLine(x);
}
また、次の操作を実行した場合、期待される結果 11 が得られることも言及する価値があります。
static void Main(string[] args)
{
int x = 10;
x = ++x;
Console.WriteLine(x);
}