如何对 'this' 关键字使用递增和递减运算符?

How to use increment and decrement operators for 'this' keyword?

我一直在用 C# 编写 class,但后来我遇到了一个问题。

我对 class.

实现了 ++ 和 -- 运算符(也称为递增和递减运算符)

但是,在一个函数中我不得不使用 this++;this--;。 但是,这会导致错误:'The operand of the increment or decrement operator must be a variable, property, or indexer'.

有没有办法将这些运算符用于 this 关键字?

如果对象是 class,当您尝试将这些运算符应用于 this 时,C# 会报错,因为 this 是对当前对象的引用,您无法分配它是另一个值(x++ 通常表示 x = x + 1)。

this++; 有效,但是,如果对象是结构,因为您可以使用 this = otherStruct;

将另一个结构的值复制到当前结构

解决方法是将 this 分配给临时工:

var x = this;
x++;

然而,这种操作仍然令人不安(请参阅上面 Jon Skeet 的评论)。你想达到什么目的?

那是因为你不能“增加或减少”classes 或对象本身。

如果你想创建另一个Person,你需要实例化一个新的:

Person person = new Person();
Person person2 = new Person(); 

等等...

增量和减量以整数为例

假设在你的 class Person 中你有一个属性“年龄”,并且你想在生日中多放一年,那么你可以:

Person myPerson = GetPerson();
myPerson .Age = 18;
myPerson .Age++

这里Person.Age就是19.

而本例中的 this 将 return Person 对象