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 显式转换成类型 T
    • await 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;否则,返回 false
    • x 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 表达式)

转载于:https://www.cnblogs.com/lzfsuifeng/p/9109164.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UPS开始尝试“货车+无人机”的投递方式,不必再担心快递员离职了

继亚马逊“空中仓库”&#xff0c;无人机送货再现新形式。 作为世界上最大的快递承运商与包裹递送公司&#xff0c;UPS当然也没有放过“送货无人机”这一新颖业务。与亚马逊推出“空中仓库”的理念类似&#xff0c;UPS并没有选择让无人机从仓库直接起飞&#xff0c;而是将之与…

技术人员如何"正确"的浪费时间?

苹果产品用户要浪费时间&#xff0c;你就应该这样做&#xff1a;买个有锁的 iPhone &#xff0c;每天刷几百次威锋网等待越狱或解锁&#xff0c;看到新 App 就安装&#xff0c;程序提示更新立刻升级&#xff1b;有新的固件(哪怕是 β 版)就压制不住升级的欲望&#xff1b;每次 …

Diango博客--10.交流的桥梁“评论功能”

文章目录0.思路引导1.创建"评论"应用2.设计"评论"的数据库模型3.注册"评论"模型到 admin4.设计“评论”表单5.展示评论表单6.“评论”视图函数7.绑定 URL8.向读者发送是否“评论”成功的状态9.详情页底部显示“评论”内容0.思路引导 本文将创建…

python与android交互,Android客户端与Python服务器端的简单通信

最近在做一个APP&#xff0c;需要与服务器通信&#xff0c;一点一点的尝试&#xff0c;记录一下。本文使用了OkHttp和Flask框架。Android客户端&#xff1a;实现功能输入完点击OK按钮后会toast成功的信息。Python服务端&#xff1a;各部分代码如下&#xff1a;activity_main.xm…

结构程序设计

结构程序设计经典定义&#xff1a;如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接&#xff0c;并且每个代码块只有一个入口和一个出口&#xff0c;则称这个程序是结构化的。 结构程序设计更全面的定义&#xff1a;结构程序设计是尽可能少用GO TO语句…

Sql Server 开窗函数Over()的使用

利用over()&#xff0c;将统计信息计算出来&#xff0c;然后直接筛选结果集1 declare t table(2 ProductID int,3 ProductName varchar(20),4 ProductType varchar(20),5 Price int)6 7 insert t8 select 1,name1,P1,3 union all9 select 2,name2,P1,5 union all 10 select 3,…

云栖科技评论第48期:前沿科技对世界的改造 我们这代人只完成了1%

1、数字经济版图呈中美双分趋势 日本IT行业为前景担忧 数字经济版图呈中美双分趋势 日本IT行业为前景担忧 【新闻摘要】《日本经济新闻》日前刊文称&#xff0c;数字经济的势力版图呈现中国和美国两强双分的趋势明显&#xff0c;这意味着日本可能不得不使用中美的技术&#xff…

程序员犯的非技术错误(Top 5)

对于程序开发者来说&#xff0c;有两种技术需要我们掌握&#xff0c;一个是技术上的能力&#xff0c;另一个是非技术上的能力。不幸的是&#xff0c;许多程序员过多地关注了技术上的能力&#xff0c;而忽略了非技术上的能力的培养&#xff0c;因此&#xff0c;我们的程序员们经…

CentOS下添加Root权限用户‘超级用户’方法(xxx is not in the sudoers file.This incident will be reported.的解决方法)

文章目录1.添加普通用户2.添加sudo文件的写权限3.编辑sudoers文件4.撤销sudoers文件写权限1.添加普通用户 [rootserver ~]# useradd fxd //添加一个名为fxd的用户 [rootserver ~]# passwd fxd //修改密码 Changing password for user chenjiafa. New UNIX password: //在这里输…

android打印intent flag,Android flag详解

Android flag详解Android flag详解一.Flag标志位在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志&#xff0c;增加标志或者去除标志。如&#xff1a;二.addFlags (int flags)和setFlags (int flags)区别Public Intent addFlags (int flags)增加额外…

人机界面设计

1.系统响应时间 系统响应时间指从用户完成某个控制动作(例如&#xff0c;按回车键或单击鼠标)&#xff0c;到软件给出预期的响应(输出信息或做动作)之间的这段时间。 系统响应时间有两个重要属性&#xff0c;分别是长度和易变性。 1&#xff09;长度&#xff1a;时间过长&#…

GeoHash资料

geohash基本原理 转载于:https://www.cnblogs.com/hyl8218/p/9111410.html

开启市场新格局 且看新华三计算与存储新品发布会

全球领先的新IT解决方案领导者新华三将于8月31日在北京钓鱼台国宾馆举办“新IT 新动能 新格局 新华三下一代计算与存储发布会”&#xff0c;重磅发布服务器和存储的全线新品。 2017年初&#xff0c;新华三集团正式推出了“应用驱动 云领未来”的新IT战略。在这一战略指引下&…

Centos7更新 SQLite3至版本3.29.0

文章目录1.创建 src 目录并进到这个目录2.下载 sqlite3 源码并解压安装3.替换系统低版本 sqlite31.创建 src 目录并进到这个目录 fxd用户下&#xff1a; mkdir -p ~/src cd ~/src 2.下载 sqlite3 源码并解压安装 fxd用户下&#xff1a; wget https://sqlite.org/2019/sqlite…

开发人员必学的5门课程

越来越多的Web开发人员通常都会问一些同样的问题。比如&#xff1a;哪一种开发语言最重要&#xff1f;初级开发人员的薪金会是多少&#xff1f;公司提供的免费培训有用吗&#xff1f;如何评估一个新的项目&#xff1f;尽管这些问题都很重要&#xff0c;但是开发人员往往对其他人…

android 响应类型,android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改响应类型...

正如Than所说,使用拦截器的解决方案并不是那么好.我已经设法用一个Rx变压器来解决这个问题.我还添加了自定义api异常,当出现问题时我可以抛出它并在onError中轻松处理它.我认为它更强大.响应包装器&#xff1a;public class ApiResponse {private boolean success;private T da…

龟兔赛跑问题

题目 乌龟与兔子进行赛跑&#xff0c;跑场是一个矩型跑道&#xff0c;跑道边可以随地进行休息。乌龟每分钟可以前进3米&#xff0c;兔子每分钟前进9米&#xff1b;兔子嫌乌龟跑得慢&#xff0c;觉得肯定能跑赢乌龟&#xff0c;于是&#xff0c;每跑10分钟回头看一下乌龟&#x…

过程设计的工具

描述程序处理过程的工具称为过程设计工具&#xff0c;它可以分为图形、表格和语言3类。不论是那类工具&#xff0c;对他们的基本要求都是提供对设计 无歧义的描述&#xff0c;也就是应该能够指明控制流程、处理功能、数据组织以及其他方面的实现细节。从而在编码阶段能够把对应…

Centos7中安装python3.7、pip3以及pipenv(亲测有效)

文章目录1.安装python3.7以及pip32.使用pip3安装pipenv时pip报错3.使用pip3安装pipenv时出现ReadTimeoutError4.查看pipenv版本报错1.安装python3.7以及pip3 1)首先来安装依赖 yum -y install gcc gcc-c yum -y groupinstall “Development tools” yum install openssl-deve…

成功人士都是这样逼出来的

研究过很多很多成功人士的成才之路&#xff0c;发现这些人和我们普通人其实没有什么区别&#xff0c;不过&#xff0c;这些人用老祖宗的话说是“天将降大任于斯人也&#xff0c;必将苦其心志&#xff0c;劳其筋骨&#xff0c;饿其体肤&#xff0c;空乏其身&#xff0c;所以动心…