一、C#语句概述(这部分内容来自网络)

语句(statement):程序的活动是通过语句来表达的。C#支持多种不同的语句,许多语句是以嵌入语句的形式定义的。

块(block):允许在只能使用单个语句的上下文中编写多个语句。块由一个括在大括号“{}”内的语句列表组成。

  声明语句(declaration statement):用于声明局部变量和常量。

表达式语句(expression statement):表达式包括方法调用、使用new运算符进行对象分配、使用“=”和复合赋值运算符进行赋值,以及使用“++”和“--”运算符进行增量和减量的运算等。

选择语句(selection statement):用于根据某个表达式的值,选择执行若干可能语句中的某一个。

If else语句

switch语句

迭代(循环)语句(iteration statement):用于重复执行嵌入语句

While语句

Do While语句

For语句

foreach语句。

跳转语句(jump statement):用于传递程序控制。

Break语句

Continue语句

Goto语句

Throw语句

return语句

异常处理语句try-catch-finally):用于捕捉在块的执行期间发生的异常。

Try-catch语句

Try-finally语句

Try-catch-finally语句

try-[catch]-finally语句用于指定一个终止代码块,不管异常出现与否,它总是被执行。

二、checked和unchecked语句:用于控制整型算术运算和转换的溢出检查。

checked检查它作用的域中可能出现的违例,并抛出一个异常;而unchecked则阻止所有的检查。

如:

C#基础—— check、lock、using语句归纳_资源管理     int i = int.MaxValue;
C#基础—— check、lock、using语句归纳_资源管理     
checked
C#基础—— check、lock、using语句归纳_临界区_03C#基础—— check、lock、using语句归纳_临界区_04     
{
C#基础—— check、lock、using语句归纳_指示符_05         Console.WriteLine(i 
+ 1);  //报一个为处理异常
C#基础—— check、lock、using语句归纳_引用类型_06
     }

C#基础—— check、lock、using语句归纳_资源管理     
unchecked
C#基础—— check、lock、using语句归纳_临界区_03C#基础—— check、lock、using语句归纳_临界区_04     
{
C#基础—— check、lock、using语句归纳_指示符_05         Console.WriteLine(i 
+ 1);  //不进行益处检查,返回一个错误的结果
C#基础—— check、lock、using语句归纳_引用类型_06
     }

C#基础—— check、lock、using语句归纳_资源管理

看了如果理解还不是很深入,再看看下面的代码
C#基础—— check、lock、using语句归纳_资源管理        class checkedTest
C#基础—— check、lock、using语句归纳_临界区_03C#基础—— check、lock、using语句归纳_临界区_04        
{
C#基础—— check、lock、using语句归纳_指示符_05            
const int x = 1000000;
C#基础—— check、lock、using语句归纳_指示符_05            
const int y = 1000000;
C#基础—— check、lock、using语句归纳_指示符_05            
static int F()
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20                
checked return (x * y); } //编译器警告:运算在编译时溢出
C#基础—— check、lock、using语句归纳_引用类型_23
            }

C#基础—— check、lock、using语句归纳_指示符_05            
static int G()
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20                
unchecked return (x * y); } // 不进行溢出检查,返回-727379968 
C#基础—— check、lock、using语句归纳_引用类型_23
            }

C#基础—— check、lock、using语句归纳_指示符_05            
static int H()
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_指示符_05                
return x * y; // 编译器警告:运算在编译时溢出
C#基础—— check、lock、using语句归纳_引用类型_23
            }

C#基础—— check、lock、using语句归纳_指示符_05            
static int M()
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_指示符_05                
//checked和unchecked不能对函数的返回值进行操作
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20
                checked return (int)(Decimal.Multiply(x, y)); } //与return (int)(Decimal.Multiply(x, y));相同,在编译的时候不会检查
C#基础—— check、lock、using语句归纳_指示符_05
                
C#基础—— check、lock、using语句归纳_引用类型_23            }

C#基础—— check、lock、using语句归纳_指示符_05            
static void Main()
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_指示符_05                Console.WriteLine(F());
C#基础—— check、lock、using语句归纳_指示符_05                Console.WriteLine(G());
C#基础—— check、lock、using语句归纳_指示符_05                Console.WriteLine(H());  
C#基础—— check、lock、using语句归纳_指示符_05                Console.WriteLine(M());
C#基础—— check、lock、using语句归纳_引用类型_23            }

C#基础—— check、lock、using语句归纳_引用类型_06        }

C#基础—— check、lock、using语句归纳_资源管理
 

三、lock语句:用于获取给定对象的互斥锁,执行语句,然后释放该锁。

lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入一个锁定代码,则它将在释放该对象前一直等待,此语句的形式如下:

lock(expression) statement_block

其中: 

expression

指定要锁定的对象。expression 必须是引用类型。

通常,如果要保护实例变量,则 expression  this;如果要保护 static 变量(或者如果临界区出现在给定类的静态方法中),则 expression  typeOf (class)

statement_block

临界区的语句。 

下列形式的 lock 语句

lock (x) ...

(其中 x 是一个引用类型的表达式)完全等效于

C#基础—— check、lock、using语句归纳_资源管理  System.Threading.Monitor.Enter(x);
C#基础—— check、lock、using语句归纳_资源管理  
try 
C#基础—— check、lock、using语句归纳_临界区_03C#基础—— check、lock、using语句归纳_临界区_04  
{
C#基础—— check、lock、using语句归纳_指示符_05      C#基础—— check、lock、using语句归纳_指示符_58
C#基础—— check、lock、using语句归纳_引用类型_06  }

C#基础—— check、lock、using语句归纳_资源管理  
finally 
C#基础—— check、lock、using语句归纳_临界区_03C#基础—— check、lock、using语句归纳_临界区_04  
{
C#基础—— check、lock、using语句归纳_指示符_05      System.Threading.Monitor.Exit(x);
C#基础—— check、lock、using语句归纳_引用类型_06  }

C#基础—— check、lock、using语句归纳_资源管理
 

不同的只是:实际执行中 x 只计算一次。

当一个互斥锁已被占用时,在同一线程中执行的代码仍可以获取和释放该锁。但是,在其他线程中执行的代码在该锁被释放前是无法获得它的。

C#基础—— check、lock、using语句归纳_资源管理          class Account
C#基础—— check、lock、using语句归纳_临界区_03C#基础—— check、lock、using语句归纳_临界区_04          
{
C#基础—— check、lock、using语句归纳_指示符_05              
decimal Totail;
C#基础—— check、lock、using语句归纳_指示符_05              
public void Payment(decimal Consume)
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20              
{
C#基础—— check、lock、using语句归纳_指示符_05                 
lock(this)
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20                 
{
C#基础—— check、lock、using语句归纳_指示符_05                    
if (Consume > Totail) 
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20                    
{
C#基础—— check、lock、using语句归纳_指示符_05                       
throw new Exception("帐户余额不足,不能支付!");
C#基础—— check、lock、using语句归纳_引用类型_23                    }

C#基础—— check、lock、using语句归纳_指示符_05                    
else
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20                    
{
C#基础—— check、lock、using语句归纳_指示符_05                        Totail 
-= Consume;
C#基础—— check、lock、using语句归纳_引用类型_23                    }

C#基础—— check、lock、using语句归纳_引用类型_23                 }

C#基础—— check、lock、using语句归纳_引用类型_23              }

C#基础—— check、lock、using语句归纳_引用类型_06       }

C#基础—— check、lock、using语句归纳_资源管理

 

四、using语句:

1、 命名空间指示符,用于引用命名空间

如:using Sysytem;

2、 别名指示符(指定命名空间或类的别名

如:using Dos=System.Console

3、 资源管理的语句功能

如:using(Font F= new Font(“宋体”,12))

{

       Console.WriteLine(F.Italic.ToString());             

}//运行结束时,释放了F对象

示例 :

C#基础—— check、lock、using语句归纳_资源管理//#define Debug
C#基础—— check、lock、using语句归纳_资源管理
#undef Debug
C#基础—— check、lock、using语句归纳_资源管理
C#基础—— check、lock、using语句归纳_资源管理
//using 用作命名空间指示符
C#基础—— check、lock、using语句归纳_资源管理
using System;
C#基础—— check、lock、using语句归纳_资源管理
using System.Collections.Generic;
C#基础—— check、lock、using语句归纳_资源管理
using System.Text;
C#基础—— check、lock、using语句归纳_资源管理
using System.IO;
C#基础—— check、lock、using语句归纳_资源管理
C#基础—— check、lock、using语句归纳_资源管理
namespace statement
C#基础—— check、lock、using语句归纳_临界区_03C#基础—— check、lock、using语句归纳_临界区_04
{
C#基础—— check、lock、using语句归纳_指示符_05    
//指定Font类的别名为F
C#基础—— check、lock、using语句归纳_指示符_05
    using F = System.Drawing.Font;
C#基础—— check、lock、using语句归纳_指示符_05    
class Program
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20    
{    
C#基础—— check、lock、using语句归纳_指示符_05        
static void Main(string[] args)
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20        
{
C#基础—— check、lock、using语句归纳_指示符_05            
//using 语句管理资源的用法
C#基础—— check、lock、using语句归纳_指示符_05
            using (TextWriter W = File.CreateText("E://test.txt"))
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_指示符_05                W.WriteLine(
@"using 语句使用:using 语句允许程序员指定使用资源的对象应当何时释放资源。有资源管理的语句功能");
C#基础—— check、lock、using语句归纳_指示符_05                
//使用别名来实例化对象
C#基础—— check、lock、using语句归纳_指示符_05
                F font = new F("宋体",12);
C#基础—— check、lock、using语句归纳_指示符_05                W.WriteLine(font.Name.ToString() 
+ font.Size.ToString());
C#基础—— check、lock、using语句归纳_引用类型_23            }

C#基础—— check、lock、using语句归纳_指示符_05
C#基础—— check、lock、using语句归纳_指示符_05            
//上面的using语句等价于下面的预编译语句
C#基础—— check、lock、using语句归纳_指示符_05
            #if Debug
C#基础—— check、lock、using语句归纳_指示符_05            TextWriter w 
= File.CreateText("E://test.txt");
C#基础—— check、lock、using语句归纳_指示符_05            
try
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_指示符_05                w.WriteLine(
@"using 语句使用:using 语句允许程序员指定使用资源的对象应当何时释放资源。有资源管理的语句功能");
C#基础—— check、lock、using语句归纳_引用类型_23            }

C#基础—— check、lock、using语句归纳_指示符_05            
finally
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_指示符_05                
//标准写法,下面语句也可以直接写成w.Dispose()
C#基础—— check、lock、using语句归纳_指示符_05
                if(w != null)((IDisposable)w).Dispose();
C#基础—— check、lock、using语句归纳_引用类型_23            }

C#基础—— check、lock、using语句归纳_指示符_05            
#endif
C#基础—— check、lock、using语句归纳_指示符_05
C#基础—— check、lock、using语句归纳_指示符_05            
//可以在using 语句中声明对象也可以在using 语句之前声明对象,如下:
C#基础—— check、lock、using语句归纳_指示符_05
            TextReader R = File.OpenText("E://test.txt");
C#基础—— check、lock、using语句归纳_指示符_05            
using (R)
C#基础—— check、lock、using语句归纳_资源管理_19C#基础—— check、lock、using语句归纳_引用类型_20            
{
C#基础—— check、lock、using语句归纳_指示符_05                
string Stringd = R.ReadToEnd();
C#基础—— check、lock、using语句归纳_指示符_05                Console.WriteLine(Stringd);
C#基础—— check、lock、using语句归纳_引用类型_23            }

C#基础—— check、lock、using语句归纳_引用类型_23        }

C#基础—— check、lock、using语句归纳_引用类型_23    }

C#基础—— check、lock、using语句归纳_引用类型_06}

C#基础—— check、lock、using语句归纳_资源管理