c#控制结构
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关 系 表 达 式
as 操作符 as 操作符用于通过引用转换或装箱转换将一个值显式地转换成 指定的引用类型。不像显式类型转换,as不会产生任何异常。如果转 换不可以进行,那么结果值为null。形如“e as T”的运算(e 是一 个表达式,T是一个引用类型),返回值的类型总是T的类型,并且结 果总是一个值。如果指定的转换不可能实施,则运算结果为 null。 例如,当你在程序中写了下面的语句: string s = „a‟ as string; 虽然,字符型不能转换为字符串类型,程序仍然可以编译通过, 只是有一个警告: The given expression is never of the provided („string‟) type.
位 表 达 式
第五章 表达式
5.4 位表达式
与运算 操作数按二进制位进行与运算,运算规则为: 0&0=0 0&1=0 1&0=0 1&1=1 这说明,除了两个位均为1,与运算结果为1, 其它情况下与运 算结果均为0。 比如,2和10进行位与运算,情况是如下: 2 的二进制表示:00000010 10的二进制表示:00001010 与运算的结果: 00000010 所以2&10 的结果为2。
位 表 达 式
第五章 表达式
5.5 赋值表达式
赋值操作符和赋值表达式: 赋值就是给一个变量赋一个新值。 其规则化的定义是这样的: 赋值: 一元表达式 赋值运算符 表达式 赋值运算符:下列之一 = += -= *= /= %= &= |= ^= <<= >>= C#中提供的赋值表达式有: = += -= *= /= %= &= |= ^= <<= >>= 赋值的左操作数必须是一个变量、属性访问器或索引访问器的 表达式。C#中可以对变量进行连续赋值,这时赋值操作符是右关联 的,这意味着从右向左操作符被分组。 例如: 形如: a = b = c 的表达式,等价于a = (b = c) 如果赋值操作符两边的操作数类型不一致,那就先要进行类型 转换。
逻辑操作符 逻辑操作符的运算结果可以用逻辑运算的真值表来表示: 逻辑与、逻辑或、逻辑非运算的真值表如下:
条 件 逻 辑 表 达 式
如果表达式中同时存在着多个逻辑运算符,逻辑非的优先级最高,逻辑 与的优先级高于逻辑或。
第五章 表达式
5.7 条件逻辑表达式
条 件 逻 辑 表 达 式
逻辑表达式 用逻辑操作符将关系表达式或布尔值连接起来就是逻辑表 达式,逻辑表达式的值仍然是一个布尔值。 注意点:在逻辑表达式的求值过程中,不是所有的逻辑操 作符都被执行,有时候不需要执行所有的操作符就可以确定逻 辑表达式的结果,只有在必须执行下一个逻辑操作符后才能求 出逻辑表达式的值时,才继续执行该操作符。 这种情况我们称为逻辑表达式的“短路”。
第五章 表达式
5.3 自增和自减表达式
自 增 和 自 减 表 达 式
自增自减: 自增操作符 ++ 对变量的 值加1, 而自减操作符 –- 对 变量的值减1。 它们适合于 sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal 和enum 类型。 例如:假设一个整数x 的值 为9,那么执行x++之后的值为 10。
算 术 表 达 式
第五章 表达式
5.2 算术表达式
模运算
算 术 表 达 式
“/”操作符用来求除法的商,而“%”操作符则用来求除法的余 数。C#中的求模运算即适用于整数类型,也同样适用于浮点数类型 和十进制类型。例如:5 % 3 的结果为2,5 % 1.5 的结果为0.5。 浮点数类型和十进制类型,这一点是很奇怪的!!! 书上有一个例子(p77,p5_4)是用来产生随机数的。很有用处。
第五章 表达式
5.8 其它特殊表达式
条 件 逻 辑 表 达 式
三元操作符: 例如表达式: a? b: c? d: e 将按如下的形式执行: a? b: (c? d: e) “?:”的每一个操作数必须是一个可以隐式转换成bool型 的表达式,或者执行操作符true 类型的表达式。 如果上述这两个条件一个也不满足,则发生运行时错误。
第五章 表达式
5.8 其它特殊表达式
条 件 逻 辑 表 达 式
三元操作符: b? x: y “?:”的第二和第三个操作数控制了条件表达式的类型。 设x 和y 分别是第二个和第三个操作数的类型,那么: 1. 如果x 和y 为同一类型,则该类型即是条件表达式的类型; 2. 否则,如果从x 到y 存在一个隐式转换,但不存在y 到x 的转换, 那么y 是条件表达式的类型; 3. 否则,如果从y 到x 存在一个隐式转换,但不存在x 到y 的转换, 那么x 是条件表达式的类型; 4. 否则,没有定义任何表达式类型发生编译时错误。
第六讲 控制结构
第4章 成员、变量和常量
表达式 复习
第五章 表达式
5.1 操作符
依照操作符作用的操作数的个数来分,C#中有三种类型的操作符: 一元操作符 二元操作符
操 作 符
三元操作符
第五术 表 达 式
字符串加法 代表的组合 减法运算
加法操作符可以运用于整数类型、实数 类型、枚举类型、字符串类型和代表类 型。这是通过操作符重载实现的。
第五章 表达式
5.2 算术表达式
代表的组合和 删除(例子 p78,并运行 )
using System; namespace P5_5 { class DelegateOperation { public static void Main() { ………….. FaxDelegate d1 = new FaxDelegate(c1.SendFax); FaxDelegate d2 = new FaxDelegate(c1.ReceiveFax); //合并代表 FaxDelegate d3 = d1 + d2; d3(c2.m_Fax, "Happy Christmas"); //删除代表 d3 = d3 - d1; d3(c2.m_Fax, "Received"); }} //代表定义 delegate void FaxDelegate(string targetFax, string text); class Contact{……………….} class Colleague : Contact { public string m_Fax; public void SendFax(string targetFax, string text){…} public void ReceiveFax(string targetFax, string text){……} } }
using System; class Test { public static void Main() { int x = 5; Console.WriteLine((x++)+(x++)+(x++)); int y = (x++)+(x++)+(x++); Console.WriteLine(y); } } 程序运行的结果是: 18 27
枚举型减法
代表的移去
减法操作符同样可以运用于整数类型、实数 类型、枚举类型、字符串类型和代表类型。 它的使用规则和加法操作符没有什么区别
第五章 表达式
5.2 算术表达式
字符串加法(例子1) string s1=“Hello,”;
算 术 表 达 式
string s2=“同学”
string s1=s1+s2;
关 系 表 达 式
第五章 表达式
5.6 关系表达式
using System; class Test { public static void Main() { Console.WriteLine("\"1 is int\" => {0}", 1 is int); Console.WriteLine("\"1 is float\" => {0}", 1 is float); Console.WriteLine("\"1.0 is float\" => {0}", 1.0 is float); Console.WriteLine("\"1.0f is float\" => {0}", 1.0f is float); Console.WriteLine("\"1.0 is double\" => {0}", 1.0 is double); Console.ReadLine(); } } 这段程序运行时输出为: "1 is int" => true "1 is float" => false "1.0 is float" => false "1.0f is float" => true "1.0 is double" => true
第五章 表达式
5.4 位表达式
位表达式: 我们知道,任何信息在计算机中都是以二进制的形式保存的。位操作符就是对 数据按二进制位进行运算的操作符。 C#语言中的位操作符有: • & 与 • | 或 • ^ 异或 • ~ 补 • << 左移 • >> 右移 由于各种原因,上述运算的名称也有很多别的叫法。 例如:称“&”为位与,称“|”为位或,称“^”为位异或,称“~”为求补、取补、 位补等。 上述位运算符中,补运算只有一个操作数,而其它的位操作符都有两个操作数。 这些运算都不会产生溢出。位操作符的操作数为整型或者是可以转换为整型的任何 其它类型。
第五章 表达式
5.8 其它特殊表达式
条 件 逻 辑 表 达 式
三元操作符: 有时也称三元操作符“?:”为条件操作符。 对条件表达式: b? x: y 先计算条件b,然后进行判断。如果b的值为true,计算x 的值,运算结果为x 的值;否则,计算y, 运算结果为y 的 值。一个条件表达式从不会又计算x,也计算y。条件操作符是 向右关联的,也就是说,从左向右分组计算。
第五章 表达式
5.8 其它特殊表达式
条 件 逻 辑 表 达 式
类型表达式: (T)e 非常常用的方法,很简单,很重要!!!
第五章 表达式
5.8 其它特殊表达式
第五章 表达式
5.7 条件逻辑表达式
条 件 逻 辑 表 达 式
逻辑操作符和逻辑表达式 逻辑操作符 C#语言提供了三种逻辑操作符: && 逻辑与; || 逻辑或; ! 逻辑非; 其中,逻辑与和逻辑或都是二元操作符,要求有两个操作数。而逻辑非 为一元操作符,只有一个操作数。
第五章 表达式
5.7 条件逻辑表达式
赋 值 表 达 式
第五章 表达式
5.6 关系表达式
关系操作符和关系表达式 关系运算实际上是逻辑运算的一种。我们可以把它理解为一 种判断,判断的结果,要么是真,要么是假。也就是说,关系表 达式的返回值总是布尔值。C#定义关系操作符的优先级低于算 术操作符,高于赋值操作符。 C#中定义的比较操作符有: ==、!=、<、>、<=、>=、is 和 as。
关 系 表 达 式
第五章 表达式
5.6 关系表达式
比较运算 ==、!=、<、>、<= 和 >= 运算符是比较运算符。 对于 x op y 形式为(其中 op 为比较运算符)的运算, 应用重载决策以选择特定的运算符实现。操作数转换为所选运算 符的参数类型,结果的类型是该运算符的返回类型。 大小的比较(整数与实数) 布尔类型 对于布尔类型的比较操作符实际上只有两种: 如果 x 和 y 都为 true,或者如果 x 和 y 都为 false,则 == 的结果为 true。否则,结果为 false。如果 x 和 y 都为 true,或者 x 和 y 都为 false,则 != 的结果为 false。否 则,结果为 true。当操作数为 bool 类型时,!= 运算符产生 与 ^ 运算符相同的结果。
关 系 表 达 式
is 操作符 is 操作符被用于动态 地检查运行时对象类型是 否和给定的类型兼容。运 算“e is T”的结果,其中, e 是一个表达式,T 是一 个类型,返回值是一个布 尔值。它表示,e 是否能 通过引用转换、装箱转换 或拆箱转换,成功地转换 于T 类型。
第五章 表达式
5.6 关系表达式
一元操作符一元操作符二元操作符二元操作符三元操作符三元操作符三元操作符三元操作符第五章第五章5151操作符操作符表达式表达式算算术术表表达达式式加法运算加法运算枚举型加法枚举型加法字符串加法字符串加法第五章第五章5252算术表达式算术表达式表达式表达式加法操作符可以运用于整数类型加法操作符可以运用于整数类型实数类型类型枚举类型枚举类型字符串类型和代表类字符串类型和代表类型型