零点起飞学C#之表达式和运算符.pptx

上传人:max****ui 文档编号:20795045 上传时间:2021-04-18 格式:PPTX 页数:41 大小:419.89KB
返回 下载 相关 举报
零点起飞学C#之表达式和运算符.pptx_第1页
第1页 / 共41页
零点起飞学C#之表达式和运算符.pptx_第2页
第2页 / 共41页
零点起飞学C#之表达式和运算符.pptx_第3页
第3页 / 共41页
点击查看更多>>
资源描述
计 算 机 的 核 心 功 能 就 是 运 算 。 为 了 让 计 算 机 完 成 对 应 的 工作 , 编 程 语 言 将 常 见 的 运 算 都 预 先 设 定 好 , 并 使 用 各 种 符号 表 示 。 这 些 符 号 就 是 运 算 符 。 将 这 些 符 号 和 我 们 要 处 理的 数 据 结 合 起 来 , 就 构 成 了 表 达 式 。 本 章 将 详 细 讲 解 C#中的 各 种 运 算 符 和 表 达 式 。 表 达 式 是 一 个 由 操 作 数 ( operand) 和 运 算 符 ( operator)构 成 的 序 列 。 运 算 符 指 定 操 作 数 的 运 算 规 则 , 即 指 示 对 表达 式 中 的 操 作 数 进 行 什 么 样 的 运 算 。 本 节 将 详 细 介 绍 表 达式 。 在 C#语 言 中 , 根 据 操 作 数 的 类 型 可 以 把 表 达 式 分 为 以 下 9种 类 别 , 如 下 表 所 示 。操 作 数 类 型 运 算值 每 一 个 值 都 有 关 联 的 类 型变 量 每 一 个 变 量 都 有 关 联 的 类 型 。 如 果 该 变 量 定 义 了 相 关 的 类 型 , 则 称 该 变 量 为 已 声 明 类 型 的 变 量命 名 空 间 C#程 序 是 利 用 命 名 空 间 组 织 起 来 的类 型 指 定 变 量 数 据 的 存 储 方 式 和 操 作 方 法 方 法 组 表 示 一 组 方 法 , 并 可 以 通 过 实 例 调 用 方 法 组 中 的 方 法属 性 访 问 每 个 属 性 访 问 都 有 关 联 的 类 型 , 即 该 属 性 的 类 型事 件 访 问 每 个 事 件 访 问 都 有 关 联 的 类 型 , 即 该 事 件 的 类 型索 引 器 访 问 每 个 索 引 器 访 问 都 有 关 联 的 类 型 , 即 该 索 引 器 的 元 素 类 型Nothing 出 现 在 调 用 一 个 具 有 void返 回 类 型 的 方 法 时 下 面 我 们 来 学 习 几 个 特 殊 的 表 达 式 , 如 this、 new。 它 们 隐藏 了 操 作 符 , 都 有 其 特 殊 的 作 用 。 使 用 this关 键 字 可 以 限定 名 称 相 同 的 成 员 , base关 键 字 用 于 从 派 生 类 中 访 问 基 类的 成 员 , new关 键 字 作 为 new运 算 符 时 可 以 创 建 对 象 等 。 this关 键 字 可 以 用 来 引 用 类 的 当 前 实 例 。 this关 键 字 存 在 3种 常 用 用 法 : 限 定 名 称 相 同 的 成 员 、 将 对 象 本 身 作 为 参 数和 声 明 索 引 器 。 下 面 我 们 来 学 习 this的 第 一 种 用 法 , 后 面两 种 用 法 会 在 相 应 章 节 中 学 习 。 限 定 名 称 相 同 的 成 员 是 指 在 某 一 个 类 中 , 如 果 某 一 个 成 员的 名 称 和 其 他 对 象 ( 如 参 数 等 ) 的 名 称 相 同 , 那 么 可 以 通过 this关 键 字 限 定 该 成 员 。 【示例5-1】下面创建一个名称为Program的类,并声明了一个名称为i的私有成员。 注意:在Program(int i)函数中,Program类的i成员的名称和i参数的名称相同,为了区分这两个对象,则需要使用this关键字来限定Program类的i成员。因此,this.i表示Program类的i成员。 分析:在“this.i = i;”语句中,this.i表示Program类的私有成员i,i(“=”的右边表达式)表示i参数。因此,“this.i = i;”语句将i参数的值赋值给Program类的私有成员i。 new关 键 字 有 3种 用 法 , 分 别 是 作 为 new运 算 符 、 new修 饰符 和 new约 束 。 本 节 只 讲 解 最 基 本 的 知 识 , 学 习 new作 为运 算 符 的 用 法 , 其 他 两 种 用 法 在 相 应 章 节 继 续 学 习 。 当new关 键 字 作 为 new运 算 符 时 , 它 可 以 用 来 创 建 对 象 和 调用 构 造 函 数 、 创 建 匿 名 类 型 的 实 例 、 调 用 值 类 型 的 默 认 构造 函 数 等 。 【示例5-2】下面使用new运算符创建一个类型为object的对象obj。 object obj = new object(); /new运 算 符 创 建 object类 的对 象 obj 注意:当new运算符创建类型的一个新实例时,但并非为该实例动态分配内存。对于值类型的实例而言,一般不需要分配该实例表示的变量之外的内存(值类型的实例本身会占用一定的内存)。因此,在使用new运算符创建值类型的实例时,是不会发生动态分配内存。 运 算 符 是 表 达 式 很 重 要 的 一 部 分 , 它 指 示 对 表 达 式 中 的 操作 数 进 行 什 么 样 的 运 算 , 如 +、 、 *、 /、 %等 。 根 据 运 算符 所 需 操 作 数 的 个 数 , 可 以 把 运 算 符 分 为 一 元 运 算 符 、 二元 运 算 符 和 三 元 运 算 符 。 本 节 我 们 来 学 习 有 关 运 算 符 的 知识 。 算 术 运 算 是 基 本 的 数 学 运 算 。 它 包 括 加 、 减 、 乘 、 除 。 在C#中 , 分 别 使 用 +、 、 *、 /表 示 。 同 时 , C#还 使 用 %表示 不 常 用 的 求 余 运 算 。 它 们 的 基 本 语 法 格 式 如 下 : left expression operator right expression left expression和 right expression分 别 表 示 左 操 作 数 和 右 操 作数 , operator表 示 运 算 符 , 可 以 为 *、 /、 %、 +和 。 【示例5-3】下面使用+运算符计算i和j两个操作数(均为int类型)的和,结果保存为result变量。 如 果 左 、 右 操 作 数 的 类 型 相 同 , 则 它 们 的 运 算 结 果 的 类 型和 操 作 数 的 类 型 相 同 。 当 运 算 结 果 超 出 了 该 类 型 表 示 的 范围 时 , 如 果 使 用 了 checked运 算 符 , 则 引 发System.OverflowException异 常 。 如 果 使 用 了 unchecked运算 符 , 则 不 引 发 异 常 , 但 是 其 结 果 类 型 范 围 外 的 任 何 有 效高 序 位 都 被 放 弃 。 对 于 +运 算 符 而 言 , 如 果 其 一 个 或 两 个 操 作 数 为 string类 型时 , 则 +运 算 符 执 行 字 符 串 串 联 操 作 , 而 不 是 简 单 的 算 术运 算 。 【示例5-4】下面使用+运算符将s1和s2(均为string类型)字符串串联起来,并保存为s3变量。分析:s3变量的值为abcdef字符串。 自 增 、 自 减 运 算 符 都 属 于 一 元 运 算 符 , 执 行 对 操 作 数 进 行加 1或 者 减 1的 操 作 。 本 小 节 我 们 来 详 细 介 绍 自 增 、 自 减 运算 符 的 使 用 方 法 。 1 +运 算 符 +运 算 符 又 称 为 增 量 运 算 符 , 其 作 用 是 对 操 作 数 进 行 加 1。将 +运 算 符 放 在 操 作 数 的 左 边 , 称 该 运 算 符 为 前 缀 增 量 运算 符 。 否 则 , 称 为 后 缀 增 量 运 算 符 。 语 法 如 下 : + expression 或 者 expression + expression表 示 操 作 数 。 “ + expression” 表 达 式 首 先 计 算expression的 值 , 然 后 将 其 值 增 1, 并 作 为 该 表 达 式 的 结 果 。“ expression +” 表 达 式 首 先 计 算 expression的 值 , 并 作 为该 表 达 式 的 结 果 , 然 后 将 expression的 值 增 1。 【示例5-5】下面使用+运算符分别计算i变量的前缀增量和后缀增量的值,结果分别保存为j和k变量。分析:“+i”表达式执行之后,i变量的值为11,并作为该表达式的值。因此,j变量的值为等于11。“k = i+”表达式首先获取i变量的值,并赋值给k变量,因此,k变量的值为11。然后,再将i变量的值增1。因此,i变量的值为12。最终,i、j和k变量的值分别为12、11和11。 2 运 算 符 运 算 符 又 称 为 减 量 运 算 符 , 其 作 用 是 对 操 作 数 进 行 减 1。将 运 算 符 放 在 操 作 数 的 左 边 , 称 该 运 算 符 为 前 缀 减 量 运算 符 。 否 则 , 称 为 后 缀 减 量 运 算 符 。 语 法 如 下 : - expression 或 者 expression- expression表 示 操 作 数 。 “ expression” 表 达 式 首 先 计 算expression的 值 , 然 后 将 其 值 减 1, 并 作 为 该 表 达 式 的 结 果 。“ expression ” 表 达 式 首 先 计 算 expression的 值 , 并 作 为该 表 达 式 的 结 果 , 然 后 将 expression的 值 减 1。 【示例5-6】下面使用 运算符分别计算i变量的前缀减量和后缀减量的值,结果分别保存为j和k变量。分析:“ i”表达式执行之后,i变量的值为9,并作为该表达式的值。因此,j变量的值为等于9。“k = i ”表达式首先获取i变量的值,并赋值给k变量,因此,k变量的值为9。然后,再将i变量的值减1。因此,i变量的值为8。最终,i、j和k变量的值分别为8、9和9。 该 表 达 式 首 先 计 算 条 件 表 达 式 的 值 。 如 果 条 件 表 达 式 的 值为 真 , 则 resulta的 值 , 并 成 为 运 算 结 果 。 否 则 计 算 resultb,并 成 为 运 算 结 果 。 【示例5-10】下面使用?:运算符计算“i + j 300 ? i : j”表达式的值。其中,i和j均为int类型,值分别为10和20。分析:如果i + j表达式的值大于300时,则k的值等于i的值,否则k的值等于j的值。 如 果 有 一 个 包 含 ?:运 算 符 的 表 达 式 “ j ? x : y” , 则 该 表 达式 的 计 算 步 骤 如 下 : ( 1) 计 算 j的 值 。 ( 2) 若 j的 类 型 不 为 bool类 型 , 则 将 j的 值 转 换 为 bool类 型 。如 果 转 换 失 败 , 则 发 生 编 译 错 误 。 ( 3) 如 果 j的 值 为 true, 则 计 算 x的 值 , 并 将 结 果 作 为 该 表达 式 的 结 果 。 ( 4) 如 果 j的 值 为 false, 则 计 算 y的 值 , 并 将 结 果 作 为 该 表达 式 的 结 果 。 在 使 用 ?:运 算 符 时 , 需 要 注 意 以 下 几 点 。 ?:运 算 符 的 第 一 个 操 作 数 ( 条 件 表 达 式 ) 必 须 是 能 够 隐 式转 换 为 bool类 型 或 实 现 了 operator true的 表 达 式 。 否 则 发 生编 译 错 误 。 ?:运 算 符 的 第 2和 3个 操 作 数 决 定 ?:运 算 符 表 达 式 的 结 果 的类 型 。 第 2和 3个 操 作 数 的 类 型 要 么 相 同 , 要 么 能 够 从 一 个操 作 数 的 类 型 隐 式 转 换 为 另 外 一 个 操 作 数 的 类 型 。 否 则 发生 编 译 时 错 误 。 /.省 略 了 给 obj赋 值 的 代 码 if(obj = null | obj.ToString().Length = 0)/在 if语 句 的 判断 表 达 式 中 使 用 逻 辑 或 运 算 /.省 略 其 他 代 码 注意:当 expression表 示 被 移 位 的 表 达 式 , count表 示 移 动 的 位 数 ,operator表 示 运 算 符 , 可 以 为 。 【示例5-13】下面使用运算符分别将i(为int类型,值为20)左移和右移2位,结果分别保存为c1和c2变量。 分析:c1变量的值为80,c2变量的值为5。 x count表 达 式 将 x向 右 移 位 count个 位 。 计 算 方 法 如 下 : 当 x为 int或 long类 型 时 , 放 弃 x的 低 序 位 , 将 剩 余 的 位 向 右位 移 。 如 果 x非 负 , 则 将 高 序 空 位 位 置 设 置 为 零 。 如 果 x为负 , 则 将 其 设 置 为 1。 当 x为 uint或 ulong类 型 时 , 放 弃 x的 低 序 位 , 将 剩 余 的 位 向右 位 移 , 并 将 高 序 空 位 位 置 设 置 为 零 。 =、 !=、 、 =运 算 符 称 为 关 系 。 语 法 如 下 : left expression operator right expression left expression和 right expression分 别 表 示 左 操 作 数 和 右 操 作数 , operator表 示 运 算 符 , 可 以 为 =、 !=、 、 =。 其 中 , =、 !=、 、 =运 算 符 为 比 较 运 算 符 , 它们 的 具 体 计 算 方 法 如 下 : x = y, 如 果 x等 于 y, 则 为 true, 否 则 为 false。 x != y, 如 果 x不 等 于 y, 则 为 true, 否 则 为 false。 x y, 如 果 x大 于 y, 则 为 true, 否 则 为 false。 x = y, 如 果 x大 于 等 于 y, 则 为 true, 否 则 为 false。 【示例5-14】下面使用=运算符比较i和j的值(均为int类型,值分别为10和20)是否相等,结果保存为k变量。分析:k变量的值为false。 注意:=、!=、=运算符的结果均为bool类型。 =、 *=、 /=、 %=、 +=、 -=、 =、 int i = ( int )obj; /将 变 量 obj从 object型 转换 为 int型 注 意 : 对 于 ( T )x表 达 式 而 言 , 如 果 不 存 在 从 x的 类 型到 T的 显 式 转 换 , 则 发 生 编 译 错 误 。 否 则 , 结 果 为 显 式 转换 产 生 的 值 。 类 型 测 试 运 算 符 包 括 is和 as运 算 符 。 is运 算 符 用 于 动 态 检 查对 象 的 运 行 时 类 型 是 否 与 给 定 类 型 兼 容 , 其 结 果 也 为 bool类 型 。 对 于 “ e is T” 表 达 式 而 言 ( 其 中 , e为 表 达 式 , T为类 型 ) , 如 果 e的 结 果 能 够 隐 式 转 换 为 T类 型 , 则 该 表 达 式的 结 果 为 true, 否 则 为 false。 【示例5-17】下面使用is运算符检查i变量(类型为int)能否转换为object类型,结果保存为j变量。分析:j变量的值为true。C#中的每种类型都是直接或间接从object类类型派生的。因此,C#中的任何类型都可以转换为object类型。 as运 算 符 用 于 将 一 个 值 显 式 地 转 换 为 一 个 给 定 的 引 用 类 型 。如 果 转 换 失 败 , 则 返 回 null。 【示例5-18】下面使用as运算符将i变量(类型为int)转换为object类型的变量,并保存为j变量。 注意:as运算符从不引发异常。对于“e as T”表达式而言,e必须是表达式,T必须是引用类型,且运算结果总是能够归属于T类型。 本 章 主 要 介 绍 了 C#语 言 中 的 表 达 式 和 运 算 符 , 如 表 达 式 分类 、 this关 键 字 、 base关 键 字 、 new关 键 字 、 运 算 符 、 运 算符 重 载 等 。 这 些 都 是 很 基 础 的 知 识 。 其 中 , 重 点 是 要 掌 握表 达 式 、 运 算 符 和 运 算 符 重 载 , 为 后 续 编 写 C#程 序 代 码 奠定 基 础 。 第 6章 将 要 介 绍 C#语 言 中 的 语 句 。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!