如何对 '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 对象
我一直在用 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 对象