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() {
    int a;
    int b = 2, c = 3;
    a = 1;
    Console.WriteLine(a + b + c);
}


局部常量声明


static void Main() {
    const float pi = 3.1415927f;
    const int r = 25;
    Console.WriteLine(pi * r * r);
}


表达式语句


static void Main() {
    int i;
    i = 123;                    // Expression statement
    Console.WriteLine(i);    // Expression statement
    i++;                        //
Expression statement
    Console.WriteLine(i);    // Expression statement
}


if语句


static void Main(string[] args) {
    if (args.Length == 0) {
       Console.WriteLine("No
arguments");
    }
    else {
       Console.WriteLine("One or
more arguments");
    }
}


switch语句


static void Main(string[] args) {
    int n = args.Length;
    switch (n) {
       case 0:
           Console.WriteLine("No
arguments");
           break;
       case 1:
           Console.WriteLine("One
argument");
           break;
       default:
           Console.WriteLine("{0}
arguments", n);
           break;
       }
    }
}


while语句


static void Main(string[] args) {
    int i = 0;
    while (i < args.Length) {
       Console.WriteLine(args[i]);
       i++;
    }
}


do语句


static void Main() {
    string s;
    do {
       s = Console.ReadLine();
       if (s != null)
Console.WriteLine(s);
    } while (s != null);
}


for语句


static void Main(string[] args) {
    for (int i = 0; i < args.Length;
i++) {
       Console.WriteLine(args[i]);
    }
}


foreach语句


static void Main(string[] args) {
    foreach (string s in args) {
       Console.WriteLine(s);
    }
}


break语句


static void Main() {
    while (true) {
       string s = Console.ReadLine();
       if (s == null) break;
       Console.WriteLine(s);
    }
}


continue语句


static void Main(string[] args) {
    for (int i = 0; i < args.Length;
i++) {
       if
(args[i].StartsWith("/")) continue;
       Console.WriteLine(args[i]);
    }
}


goto语句


static void Main(string[] args) {
    int i = 0;
    goto check;
    loop:
    Console.WriteLine(args[i++]);
    check:
    if (i < args.Length) goto loop;
}


return语句


static int Add(int a, int b) {
    return a + b;
}

static void Main() {
    Console.WriteLine(Add(1, 2));
    return;
}


yield语句


static IEnumerable<int> Range(int
from, int to) {
    for (int i = from; i < to; i++) {
       yield return i;
    }
    yield break;
}

static void Main() {
    foreach (int x in Range(-10,10)) {
       Console.WriteLine(x);
    }
}


throw 和
try
 语句


static double Divide(double x, double y) {
    if (y == 0) throw new
DivideByZeroException();
    return x / y;
}

static void Main(string[] args) {
    try {
       if (args.Length != 2) {
           throw new Exception("Two
numbers required");
       }
       double x = double.Parse(args[0]);
       double y = double.Parse(args[1]);
       Console.WriteLine(Divide(x, y));
    }
    catch (Exception e) {
       Console.WriteLine(e.Message);
    }
    finally {
       Console.WriteLine(“Good bye!”);
    }
}


checked 和
unchecked 语句


static void Main() {
    int i = int.MaxValue;
    checked {
       Console.WriteLine(i + 1);       // Exception
    }
    unchecked {
       Console.WriteLine(i + 1);       // Overflow
    }
}


lock语句


class Account
{
    decimal balance;

public
void Withdraw(decimal amount) {
       lock (this) {
           if (amount > balance) {
              throw new
Exception("Insufficient funds");
           }
           balance -= amount;
       }
    }
}


using语句


static void Main() {
    using (TextWriter w =
File.CreateText("test.txt")) {
       w.WriteLine("Line
one");
       w.WriteLine("Line
two");
       w.WriteLine("Line
three");
    }
}

时间: 2024-10-27 06:01:30

C#表达式和语句的相关文章

运算符、表达式、语句

//计算多个鞋尺码对应的英寸的长度#include<stdio.h>#define ADJUST 7.64#define SCALE 0.352int main(void ){ double shoe,foot; printf("Shoe size(men's) foot length\n"); shoe = 3.0; while(shoe < 18.5) { foot = SCALE*shoe + ADJUST; printf("%10.1f %15.2f

(翻译)《二》语言基础(3)--表达式、语句、块

表达式.语句.块 现在你已经理解了变量和操作符,是学习表达式.语句和块的时候了.表达式中会使用操作符来计算值,表达式又构成语句,语句组成块. 表达式 表达式是由变量.操作符.方法调用构成,根据java语言的语法,计算得出一个值.你已经见过表达式的例子了: int cadence = 0; anArray[0] = 100; System.out.println("Element 1 at index 0:" + anArray[0]); int result = 1+2; if(val

linux-shell脚本编程-变量-算术表达式-判断语句-if分支语句

bash工作特性:    1.支持命令历史.命令补全    2.支持管道.重定向    3.支持命令别名    4.支持命令行编辑    5.支持命令行展开     6.支持文件名通配    7.支持使用变量    8.支持编程命令编辑:光标跳转:ctrl+a:跳到命令行首  home            ctrl+e:跳到命令行尾  end            ctrl+u:删除光标至命令行首的内容            ctrl+k:删除光标至命令行尾的内容             ct

Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句

Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句 一:实验环境 1):虚拟机 2):linux系统 二:实验目标 1): shell 基本语法 2):变量 3):表达式 4):判断语句 5): if表达式 三:实验脚本 第一块 一个简单的shell脚本程序 [[email protected] ~]# mkdir test [[email protected] test]# vim example1.sh #!/bin/bash #This is to show wha

【.net 深呼吸】细说CodeDom(2):表达式、语句

在上一篇文章中,老周厚着脸皮给大伙介绍了代码文档的基本结构,以及一些代码对象与CodeDom类型的对应关系. 在评论中老周看到有朋友提到了 Emit,那老周就顺便提一下.严格上说,Emit并不是针对代码文档生成和编译而设计的,Emit一方面可以实时发出 IL 指令,另一方面也支持动态程序集,即可以在运行时创建程序集,并可以定义类型,然后可以执行.而CodeDom所针对的是代码文档的生成和编译,所以说,是有所不同的. 哦,是了,还有一个玩意儿挺有趣,也提一下吧——动态 Linq 表达式树.它也跟动

小猪猪C++笔记基础篇(五)表达式、语句

小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还是有点点收获的东西.那么,我只就一些容易弄糊涂和忽略的地方提出来,为日后变成作参考. 一.表达式 (一)概念 表达式时由一个或者多个运算对象组成的,对一个表达式求值将得到一个结果.把一个运算发和一个或者多个运算对象组合起来可以生成较为复杂的表达式. 作用于一个对象的运算符是一元运算符例如:“&”,“

C 运算符、表达式和语句

1.一个示例程序 示例程序 //一个对长跑运动员有用的程序 #include<stdio.h> #define S_PER_H 3600 #define S_PER_M 60 #define S_PER_K 0.62137 int main(void) { double distk,distm;//跑过的路程,公里.英里 double rate;//以英里/每小时的单位平均速度 int min,sec;//跑步用的分钟数和秒钟数 int time;//用秒表示跑步时间 double mtime

C语言————常量 、变量、 表达式、 语句详谈

常量 常量(Constant)是程序中最基本的元素,有字符(Character)常量. 整数(Integer)常量.浮点数(Floating Point)常量和枚举常量. 下面看一个例子: printf("character: %c\n  integer: %d\n  floating point: %f\n", '}', 34, 3.14); 常量在程序加载内存的常量区,即.data段 字符常量要用单引号括起来,注意单引号只能括一个字符而不能像双引号那样括一串字符, 字符常量也可以是

黑马程序员------C 语言学习笔记---C语言的表达式和语句

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.1     C语言的表达式和语句 由运算符讲常量,变量,和函数调用连接起来的式子称为表达式,常见的形式为赋值语句,函数调用语句,空语句. l 赋值语句:先计算=右边的值然后将其赋值给左边的变量 注意点:变量必须先定义后使用: