1个回答
展开全部
C和C++开发人员应很熟悉大多数C#运算符,这里为新程序员和VB开发人员介绍最重要的运算符,并介绍C#中的一些新变化。
C#支持表5-1所示的运算符,其中有4个运算符(sizeof、*、–>、&)只能用于不安全的代码(这些代码绕过了C#类型安全性的检查),这些不安全的代码见第7章的讨论。
表 5-1
类 别
运 算 符
算术运算符
+ – * / %
逻辑运算符
& | ^ ~ && || !
字符串连接运算符
+
增量和减量运算符
++ – –
移位运算符
<< >>
比较运算符
== != < > <= >=
赋值运算符
= += –= *= /= %= &= |= ^= <<= >>=
成员访问运算符(用于对象和结构)
.
索引运算符(用于数组和索引器)
[]
数据类型转换运算符
()
条件运算符 (三元运算符)
?:
委托连接和删除运算符(见第6章)
+ –
对象创建运算符
new
类型信息运算符
sizeof (只用于不安全的代码) is typeof as
类 别
运 算 符
溢出异常控制运算符
checked unchecked
间接寻址运算符
* –> & (只用于不安全代码) []
命名空间别名限定符(见第2章)
::
空接合运算符
??
使用C#运算符的一个最大缺点是,与C风格的语言一样,赋值(=)和比较(==)运算使用不同的运算符。例如,下述语句表示“x等于3”:
x = 3;
如果要比较x和另一个值,就需要使用两个等号(==):
if (x == 3)
C#非常严格的类型安全规则防止出现常见的C#错误,也就是在逻辑语句中使用赋值运算符代替比较运算符。在C#中,下述语句会产生一个编译错误:
if (x = 3)
习惯使用宏字符&来连接字符串的VB程序员必须改变这个习惯。在C#中,使用加号+连接字符串,而&表示两个不同整数值的按位AND运算。| 则在两个整数之间执行按位OR运算。VB程序员可能还没有使用过%(取模)运算符,它返回除运算的余数,例如,如果x等于7,则x% 5会返回2。
在C#中很少会用到指针,因此也很少会用到间接寻址运算符(–>)。使用它们的惟一场合是在不安全的代码块中,因为只有在此C#才允许使用指针。指针和不安全的代码见第7章。
5.1.1 运算符的简化操作
表5-2列出了C#中的全部简化赋值运算符。
表 5-2
运算符的简化操作
等 价 于
x++, ++x
x = x + 1
x– –,– –x
x = x – 1
x+= y
x = x + y
x–= y
x = x – y
x *= y
x = x * y
x /= y
x = x / y
x %= y
x = x % y
x >>= y
x = x >> y
x <<= y
x = x << y
运算符的简化操作
等 价 于
x &= y
x = x & y
x |= y
x = x | y
x ^= y
x = x ^ y
为什么用两个例子来说明++增量和– –减量运算符?把运算符放在表达式的前面称为前置,把运算符放在表达式的后面称为后置。它们的执行方式有所不同。
增量或减量运算符可以作用于整个表达式,也可以作用于表达式的内部。当x++和++x单独占一行时,它们的作用是相同的,对应于语句x = x + 1。但当它们用于表达式内部时,把运算符放在前面(++x)会在计算表达式之前递增x,换言之,递增了x后,在表达式中使用新值进行计算。而把运算符放在后面(x++)会在计算表达式之后递增x—— 使用原来的值计算表达式。
C#支持表5-1所示的运算符,其中有4个运算符(sizeof、*、–>、&)只能用于不安全的代码(这些代码绕过了C#类型安全性的检查),这些不安全的代码见第7章的讨论。
表 5-1
类 别
运 算 符
算术运算符
+ – * / %
逻辑运算符
& | ^ ~ && || !
字符串连接运算符
+
增量和减量运算符
++ – –
移位运算符
<< >>
比较运算符
== != < > <= >=
赋值运算符
= += –= *= /= %= &= |= ^= <<= >>=
成员访问运算符(用于对象和结构)
.
索引运算符(用于数组和索引器)
[]
数据类型转换运算符
()
条件运算符 (三元运算符)
?:
委托连接和删除运算符(见第6章)
+ –
对象创建运算符
new
类型信息运算符
sizeof (只用于不安全的代码) is typeof as
类 别
运 算 符
溢出异常控制运算符
checked unchecked
间接寻址运算符
* –> & (只用于不安全代码) []
命名空间别名限定符(见第2章)
::
空接合运算符
??
使用C#运算符的一个最大缺点是,与C风格的语言一样,赋值(=)和比较(==)运算使用不同的运算符。例如,下述语句表示“x等于3”:
x = 3;
如果要比较x和另一个值,就需要使用两个等号(==):
if (x == 3)
C#非常严格的类型安全规则防止出现常见的C#错误,也就是在逻辑语句中使用赋值运算符代替比较运算符。在C#中,下述语句会产生一个编译错误:
if (x = 3)
习惯使用宏字符&来连接字符串的VB程序员必须改变这个习惯。在C#中,使用加号+连接字符串,而&表示两个不同整数值的按位AND运算。| 则在两个整数之间执行按位OR运算。VB程序员可能还没有使用过%(取模)运算符,它返回除运算的余数,例如,如果x等于7,则x% 5会返回2。
在C#中很少会用到指针,因此也很少会用到间接寻址运算符(–>)。使用它们的惟一场合是在不安全的代码块中,因为只有在此C#才允许使用指针。指针和不安全的代码见第7章。
5.1.1 运算符的简化操作
表5-2列出了C#中的全部简化赋值运算符。
表 5-2
运算符的简化操作
等 价 于
x++, ++x
x = x + 1
x– –,– –x
x = x – 1
x+= y
x = x + y
x–= y
x = x – y
x *= y
x = x * y
x /= y
x = x / y
x %= y
x = x % y
x >>= y
x = x >> y
x <<= y
x = x << y
运算符的简化操作
等 价 于
x &= y
x = x & y
x |= y
x = x | y
x ^= y
x = x ^ y
为什么用两个例子来说明++增量和– –减量运算符?把运算符放在表达式的前面称为前置,把运算符放在表达式的后面称为后置。它们的执行方式有所不同。
增量或减量运算符可以作用于整个表达式,也可以作用于表达式的内部。当x++和++x单独占一行时,它们的作用是相同的,对应于语句x = x + 1。但当它们用于表达式内部时,把运算符放在前面(++x)会在计算表达式之前递增x,换言之,递增了x后,在表达式中使用新值进行计算。而把运算符放在后面(x++)会在计算表达式之后递增x—— 使用原来的值计算表达式。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询