赋值就是给一个变量赋一个新值。C#中提供的赋值表达式有:
= += -= *= /= %= &= /= ^= <<= >>=
赋值的左操作数必须是一个变量,属性访问器或索引访问器的表达式。
C#中可以对变量进行连续赋值,这时赋值操作符是右关联的,这意味着从右向左操作符被分组。例如,形如a=b=c的表达式等价于a=(b=c)。
如果赋值操作符两边的操作数类型不一致,那就先要进行类型转换。
7.3.1 简单赋值
“=”操作符被称为简单赋值操作符。在一个简单赋值中,右操作数必须为某种类型的表达式,且该类型必须可以隐式地转换成左操作数类型。该运算符将右操作数的值赋给作为左操作数的变量、属性或者索引器类型。简单赋值表达式的结果是被赋给左操作数的值。结果类型和左操作数的类型相同,且总是值类型。
7.3.2 复合赋值
形如x op=y的运算可以处理成形如x op y的二进制操作符重载方法。比如:
x+=5; //等于x=x+5
x%=3; //等于x=x%3
x*=y+1; //等于x=x*(y+1)
复合赋值进行的步骤如下:
(1)如果所选操作符的返回类型可以隐式转换成x的数据类型,执行x=x op y的运算,除此之外,仅对x执行一次运算。
(2)否则,所选操作符是一个预定义操作符,所选操作符的返回值类型可以显式地转换成x的类型,且y可以隐式地转换成x的类型,那么该运算等价于x=(T)(x op y)运算,这里T是x的类型,除此之外,x仅被执行一次。
(3)否则,复合赋值是无效的,且会产生编译时错误。
时间: 2024-11-02 05:57:01