表达式是在操作数运算符的基础之上构造而成。 表达式的运算符指明了向操作数应用的运算。 运算符的示例包括 +-*/ 和 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 表达式)

C#指南,重温基础,展望远方!(4)表达式的更多相关文章

  1. 【重温基础】17.WebAPI介绍

    本文是 重温基础 系列文章的第十七篇. 今日感受:挑战. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1-14篇 [重温基础]15.JS对象介绍 [重温基础 ...

  2. 【重温基础】15.JS对象介绍

    从这篇文章开始,复习 MDN 中级教程 的内容了,在初级教程中,我和大家分享了一些比较简单基础的知识点,并放在我的 [Cute-JavaScript]系列文章中. 关于[Cute-JavaScript ...

  3. 【重温基础】11.Map和Set对象

    本文是 重温基础 系列文章的第十一篇. 今日感受:注意身体,生病花钱又难受. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1.语法和数据类型 [重温基础]2 ...

  4. chrome调试工具高级不完整使用指南(基础篇)

    一.前言 本文记录的是作者在工作上面对chrome的一些使用和情况的分析分享,内容仅代表个人的观点.转发请注明出处(http://www.cnblogs.com/st-leslie/),谢谢合作 二. ...

  5. C#_02.16_基础七_.NET表达式&运算符

    C#_02.16_基础七_.NET表达式&运算符 一.字面量: 字面量和变量的关系来理解字面量会比较简单: 因此字面量是源代码中键入已知的(我们知道它是多少的)值.也可以理解是等号右边的非创建 ...

  6. Java基础教程:Lambda表达式

    Java基础教程:Lambda表达式 本文部分内容引用自OneAPM:http://blog.oneapm.com/apm-tech/226.html 引入Lambda Java 是一流的面向对象语言 ...

  7. 【重温基础】16.JSON对象介绍

    本文是 重温基础 系列文章的第十六篇. 今日感受:静. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1-14篇 [重温基础]15.JS对象介绍 本章节复习的 ...

  8. C语言基础知识-运算符与表达式

    C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...

  9. Vue基础之用插值表达式在视图区显示数据

    Vue基础之用插值表达式在视图区显示数据 第一步:当然就是你要引入Vue.js这个脚本文件啦! <script src="https://cdn.jsdelivr.net/npm/vu ...

随机推荐

  1. [bzoj1011](HNOI2008)遥远的行星(近似运算)

    Description 直 线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量, ...

  2. JavaScript之String类型

    这里先总结一下RegExp类型的两个主要方法: (1)exec():主要用于捕获组.接受一个参数,这个参数是主要应用模式的字符串,然后返回包含第一个匹配项信息的数组. (2)test():主要用于目标 ...

  3. [转]spring中<tx:advice></tx:advice>意义

    <tx:advice id="tv" transaction-manager="transactionManager"> <tx:attrib ...

  4. Codeforces Beta Round #2 B. The least round way dp

    B. The least round way 题目连接: http://www.codeforces.com/contest/2/problem/B Description There is a sq ...

  5. 这些年,我们一直追随的.NET

    闲来无事,浏览自己的QQ空间,意外发现自己在13年1月份的发在QQ空间写的一片关于技术的随笔,觉得应该将其移到这里: 这些年,我们一直追随的.NET        前两天,意外地看到了.NET平台为异 ...

  6. TStringList的DelimitedText的空格问题

    TStringList的DelimitedText的空格问题 如果DelimitedText的字符串中有空格,TStringList遇到空格会进行自动换行,而这显然不是我们想要的结果.经测试发现D7~ ...

  7. python笔记4-遍历文件夹目录os.walk()

    前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 2.walk()方 ...

  8. iOS中 xib自定义View在storyboard中的使用

    1,创建UIView 的SubClass 命名为MyView 2, new一个名为MyView的xib p1 3,配置xib的属性 p2 4,为View 添加背景色,添加一个按钮并定制按钮约束,这里我 ...

  9. 用python生成基于lombok 和 hibernate 生成javabean

    mysql工具类 import pymysql.cursors import sys from contextlib import contextmanager import traceback im ...

  10. [Android自定义控件] Android Scroller工具类和GestureDetector的简单用法

    转载:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View ...