C#表达式和语句
表达式由操作数 (operand) 和运算符 (operator) 构成。表达式的运算符指示对操作数适用什么样的运算。运算符的示例包括+、-、*、/ 和 new。操作数的示例包括文本、字段、局部变量和表达式。
当表达式包含多个运算符时,运算符的优先级 (precedence) 控制各运算符的计算顺序。例如,表达式 x + y * z 按 x + (y * z) 计算,因为 * 运算符的优先级高于 + 运算符。
大多数运算符都可以重载 (overload)。运算符重载允许指定用户定义的运算符实现来执行运算,这些运算的操作数中至少有一个,甚至所有操作数都属于用户定义的类类型或结构类型。
下表总结了 C# 运算符,并按优先级从高到低的顺序列出各运算符类别。同一类别中的运算符优先级相同。
|
类别 |
表达式 |
说明 |
|
基本 |
x.m |
成员访问 |
|
x(...) |
方法和委托调用 |
|
|
x[...] |
数组和索引器访问 |
|
|
x++ |
后增量 |
|
|
x-- |
后减量 |
|
|
new T(...) |
对象和委托创建 |
|
|
new T(...){...} |
使用初始值设定项创建对象 |
|
|
new {...} |
匿名对象初始值设定项 |
|
|
new T[...] |
数组创建 |
|
|
typeof(T) |
获取 T 的 System.Type 对象 |
|
|
checked(x) |
在 checked 上下文中计算表达式 |
|
|
unchecked(x) |
在 unchecked 上下文中计算表达式 |
|
|
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 |
减法、委托移除 |
|
|
移位 |
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 |
|
逻辑 OR |
x | y |
整型按位 OR,布尔逻辑 OR |
|
条件 AND |
x && y |
仅当 x 为 true 时,才对 y 求值 |
|
条件 OR |
x || y |
仅当 x 为 false 时,才对 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 表达式) |
语句
程序的操作是使用语句 (statement) 来表示的。C# 支持几种不同的语句,其中许多以嵌入语句的形式定义。
block 用于在只允许使用单个语句的上下文中编写多条语句。块由位于一对大括号 { 和 } 之间的语句列表组成。
声明语句 (declaration statement) 用于声明局部变量和常量。
表达式语句 (expression statement) 用于对表达式求值。可用作语句的表达式包括方法调用、使用 new 运算符的对象分配、使用 = 和复合赋值运算符的赋值、使用 ++ 和 -- 运算符的增量和减量运算以及 await 表达式。
选择语句 (selection statement) 用于根据表达式的值从若干个给定的语句中选择一个来执行。这一组中有 if 和 switch 语句。
迭代语句 (iteration statement) 用于重复执行嵌入语句。这一组中有 while、do、for 和 foreach 语句。
跳转语句 (jump statement) 用于转移控制。这一组中有 break、continue、goto、throw、return 和 yield 语句。
try...catch 语句用于捕获在块的执行期间发生的异常,try...finally 语句用于指定终止代码,不管是否发生异常,该代码都始终要执行。
checked 语句和 unchecked 语句用于控制整型算术运算和转换的溢出检查上下文。
lock 语句用于获取某个给定对象的互斥锁,执行一个语句,然后释放该锁。
using 语句用于获得一个资源,执行一个语句,然后释放该资源。
下表列出了 C# 的各语句,并提供每个语句的示例。
|
语句 |
示例 |
|
局部变量声明 |
static void Main() { |
|
局部常量声明 |
static void Main() { |
|
表达式语句 |
static void Main() { |
|
if语句 |
static void Main(string[] args) { |
|
switch语句 |
static void Main(string[] args) { |
|
while语句 |
static void Main(string[] args) { |
|
do语句 |
static void Main() { |
|
for语句 |
static void Main(string[] args) { |
|
foreach语句 |
static void Main(string[] args) { |
|
break语句 |
static void Main() { |
|
continue语句 |
static void Main(string[] args) { |
|
goto语句 |
static void Main(string[] args) { |
|
return语句 |
static int Add(int a, int b) { static void Main() { |
|
yield语句 |
static IEnumerable<int> Range(int static void Main() { |
|
throw 和 |
static double Divide(double x, double y) { static void Main(string[] args) { |
|
checked 和 |
static void Main() { |
|
lock语句 |
class Account public |
|
using语句 |
static void Main() { |
C#表达式和语句的更多相关文章
- 【.net 深呼吸】细说CodeDom(2):表达式、语句
在上一篇文章中,老周厚着脸皮给大伙介绍了代码文档的基本结构,以及一些代码对象与CodeDom类型的对应关系. 在评论中老周看到有朋友提到了 Emit,那老周就顺便提一下.严格上说,Emit并不是针对代 ...
- C Primer Plus_第5章_运算符、表达式和语句_编程练习
Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...
- JavaScript学习笔记-表达式和语句
表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一 ...
- 小猪猪C++笔记基础篇(五)表达式、语句
小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...
- C--运算符,表达式和语句实例
//第五章 运算符,表达式和语句 #include<stdio.h> //引入头文件 #include<math.h> #define ADJUST 7.64 //定义常量 # ...
- C# - 表达式与语句
表达式与语句(Expression&Statement) 操作数(Operands) 1.数字.2.字符.3.变量.4.类型.5.对象.6.方法 操作符(Operator) 参考:C# - 操 ...
- C语言之运算符、表达式和语句
#include<stdio.h> #define ADJUST 7.31 int main(void) { const double SCALE = 0.333; double shoe ...
- js 表达式与语句
引子:表达式和语句很基础,但是有时会犯错,比如: function(){}//报错 (function(){})//不报错 function f(x){ return x + 1 }()//报错 fu ...
- Javascript - 表达式与语句
表达式与语句(Expression&Statement) 流程控制语句 1.嵌入式语句 嵌入式即这种语句可以无限嵌套N层.所有嵌入式语句只需要键入首个关键单词,在visual studio里按 ...
随机推荐
- 关于iOS开发中info.plist文件的解读
我们建立一个工程后,会在Supporting files下面看到一个"工程名-Info.plist"的文件,这个是对工程做一些运行期配置的文件,很重要,不能删除. 下面就对其ke ...
- 【转】分享一份C语言写的简历
个人观点:文章想法很棒,作者的编码风格也很赞,可以从中学到不少东西.转载的文章是我都用心看过的,而且希望后续再可以回过头看的文章,努力让自己的能力越来越强,加油 这里黑客新闻吗?作者用代码更新了自己的 ...
- iOS开发网络篇之文件下载、大文件下载、断点下载
from: http://www.jianshu.com/p/f65e32012f07
- IOS开发-UI学习-使用UIImageView控件制作动画
先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *act ...
- 用while判读循环语句1+1/2!+1/3!+...1/20!的和阶乘的计算方法 式:n!=n*(n-1)!
package com.chongrui.test; /* *用while判读循环语句1+1/2!+1/3!+...1/20!的和 *使用BigDecimal类完成大数字与高精度运算 公式:n!=n* ...
- 二 APPIUM Android自动化 环境搭建
1.安装JAVA运行环境 2.安装Android开发环境 3.安装nodejs 下载地址:https://nodejs.org/en/ 下载完成之后双击安装. 4.安装APPIUM,App ...
- UWP 中实现一个颜色选择器 UWPColorPickerControl
最近在实现一个远程数字白板时,发现UWP平台上颜色选择不方便,因此自己动手写了一个. 效果图 实现 <UserControl x:Class="UWPColorPickerLibrar ...
- METRO风格
METRO风格是指微软在WINDOWS PHONE 7中新加入的界面风格,并且计划将其用于windows8中的开始菜单界面.该界面的特点是简洁高效,每一个METRO图标都没有边框,形状有点像地铁站中的 ...
- CentOS 6.6下JDK1.7安装与配置(Linux)经典入门详解案例
最近用的linux较多,在网站找了一些关于linux环境下jdk安装的教程,过程是有的但是好多细节都没有表现出来,所以我花了点时间总结了一下,希望对大家都有帮助... CentOS下JDK1.7安装与 ...
- endnote X7 加入文献
endnote可以管理文献,并且在word中方便的添加参考文献. 1.加入文献: 2.导入以后可以创建自己的group,然后把导入的参考文献拖到group里,这样方便在插入参考文献的时候用group名 ...