C#指南,重温基础,展望远方!(4)表达式
表达式是在操作数和运算符的基础之上构造而成。 表达式的运算符指明了向操作数应用的运算。 运算符的示例包括 +、-、*、/ 和 new。 操作数的示例包括文本、字段、局部变量和表达式。
如果表达式包含多个运算符,那么运算符的优先级决定了各个运算符的计算顺序。 例如,表达式 x + y * z 相当于计算 x + (y * z),因为 * 运算符的优先级高于 + 运算符。
如果操作数两边的两个运算符的优先级相同,那么运算符的结合性决定了运算的执行顺序:
- 除了赋值运算符之外,所有二元运算符均为左结合运算符,即从左向右执行运算。 例如,
x + y + z将计算为(x + y) + z。 - 赋值运算符和条件运算符 (
?:) 为右结合运算符,即从右向左执行运算。 例如,x = y = z将计算为x = (y = z)。
可以使用括号控制优先级和结合性。 例如,x + y * z 先计算 y 乘 z,并将结果与 x 相加,而 (x + y) * z 则先计算 x 加 y,然后将结果与 z 相乘。
大多数运算符都可以重载。 借助运算符重载,可以为一个或两个操作数为用户定义类或结构类型的运算指定用户定义运算符实现代码。
下面总结了 C# 运算符,按优先级从高到低的顺序列出了各类运算符。 同一类别的运算符的优先级也相同。 每个类别下均列出了相应类别的表达式,以及对每种表达式类型的说明。
- 基本
x.m:成员访问x(...):方法和委托调用x[...]:数组和索引器访问x++:后置递增x--:后置递减new T(...):创建对象和委托new T(...){...}:使用初始值设定项的对象创建new {...}:匿名对象初始值设定项new T[...]:数组创建typeof(T):获取T的 Type 对象checked(x):在已检查的上下文中计算表达式unchecked(x):在未检查的上下文中计算表达式default(T):获取类型为T的默认值delegate {...}:匿名函数(匿名方法)
- 一元
+x:标识-x:取反!x:逻辑取反~x:按位取反++x:前置递增--x:前置递减(T)x:将x显式转换成类型Tawait x:异步等待x完成
- 乘法
x * y:乘法x / y:除法x % y:求余
- 加法
x + y:加法、字符串串联、委托组合x – y:减法、委托删除
- Shift
x << y:左移位x >> y:右移位
- 关系和类型测试
x < y:小于x > y:大于x <= y:小于或等于x >= y:大于或等于x is T:如果x是T,返回true;否则,返回falsex as T:返回类型为T的x;如果x的类型不是T,返回null
- 相等
x == y:等于x != y:不等于
- 逻辑“与”
x & y:整数型位AND,布尔型逻辑 AND
- 逻辑 XOR
x ^ y:整数型位 XOR,布尔型逻辑 XOR
- 逻辑“或”
x | y:整数型位 OR,布尔型逻辑 OR
- 条件“与”
x && y:仅当x不是false时,才计算y
- 条件“或”
x || y:仅当x不是true时,才计算y
- null 合并
x ?? y:如果x为 null,计算结果为y;否则,计算结果为x
- 条件运算
x ? y : z:如果x为true,计算y;如果x为false,计算z
- 赋值或匿名函数
x = y:赋值x op= y:复合赋值;支持以下运算符*=/=%=+=-=<<=>>=&=^=|=
(T x) => y:匿名函数(lambda 表达式)
C#指南,重温基础,展望远方!(4)表达式的更多相关文章
- 【重温基础】17.WebAPI介绍
本文是 重温基础 系列文章的第十七篇. 今日感受:挑战. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1-14篇 [重温基础]15.JS对象介绍 [重温基础 ...
- 【重温基础】15.JS对象介绍
从这篇文章开始,复习 MDN 中级教程 的内容了,在初级教程中,我和大家分享了一些比较简单基础的知识点,并放在我的 [Cute-JavaScript]系列文章中. 关于[Cute-JavaScript ...
- 【重温基础】11.Map和Set对象
本文是 重温基础 系列文章的第十一篇. 今日感受:注意身体,生病花钱又难受. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1.语法和数据类型 [重温基础]2 ...
- chrome调试工具高级不完整使用指南(基础篇)
一.前言 本文记录的是作者在工作上面对chrome的一些使用和情况的分析分享,内容仅代表个人的观点.转发请注明出处(http://www.cnblogs.com/st-leslie/),谢谢合作 二. ...
- C#_02.16_基础七_.NET表达式&运算符
C#_02.16_基础七_.NET表达式&运算符 一.字面量: 字面量和变量的关系来理解字面量会比较简单: 因此字面量是源代码中键入已知的(我们知道它是多少的)值.也可以理解是等号右边的非创建 ...
- Java基础教程:Lambda表达式
Java基础教程:Lambda表达式 本文部分内容引用自OneAPM:http://blog.oneapm.com/apm-tech/226.html 引入Lambda Java 是一流的面向对象语言 ...
- 【重温基础】16.JSON对象介绍
本文是 重温基础 系列文章的第十六篇. 今日感受:静. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1-14篇 [重温基础]15.JS对象介绍 本章节复习的 ...
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
- Vue基础之用插值表达式在视图区显示数据
Vue基础之用插值表达式在视图区显示数据 第一步:当然就是你要引入Vue.js这个脚本文件啦! <script src="https://cdn.jsdelivr.net/npm/vu ...
随机推荐
- 20162318 实验一《Java开发环境的熟悉》实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级:1623班 姓名:张泰毓 成绩:2分 指导老师:娄老师.王老师 实验日期:2017年3月17日 实验密级:非密级 实验器 ...
- python基础之闭包函数与装饰器
闭包函数: 什么是闭包函数: 闭指的是定义在一个函数内部 包指的是该函数包含对外部作用域(非全局作用域)名字的引用 def counter(): n=0 def incr(): nonlocal n ...
- Problem E: 12306
#include <stdio.h> struct student{ int n; int m;}; int main(void) { int T; int k,g,i,j; ],max; ...
- Xcode8 报 ”xx“is missing from working copy 的问题解决方法
方法一: Xcode->Preferences->Source->Enable Source Control 勾勾去掉 方法二: Xcode8更新后,编译工程一下子报出800多条类似 ...
- 深入解析SQL Server并行执行原理及实践
http://dbaplus.cn/news-21-431-1.html
- PTC问答
1.什么是PTC点击网站? 答:PTC点击网站是一类网赚网站,通过点击广告来获取收益.当然,单纯通过点击广告获取的收益很少,甚至可以说可以忽略不计.如果单干不推广的话主要通过投资租赁下线来获得收益. ...
- Kubernetes应用迁移问题定位
这个帖子记录所有的应用迁移中遇到的问题. 关于镜像无法启动后无法定位问题 在原有的Dockerfile中修改,加入 RUN echo "aaa" > /etc/a.log C ...
- 七.使用fastJson解析器
1.到入jar包 <!-- 添加fastjson 依赖包. --> <dependency> <groupId>com.alibaba</groupId> ...
- 为TextView设置两种状态,程序中可以动态切换
经常会需要用文字的两种状态来表示当前系统的某两种状态.比如: 这里的第一个TextView和后两个TextView就表示了两种状态.我们可以在程序的动态的切换状态(而不是直接修改颜色) ...
- git 统计代码量 shell脚本
#!/bin/bash # 统计代码量 # 使用方法: sh gitstat.sh "2017-11-01" "2017-11-30" "JamKon ...