C# 语法基础

1、变量定义
 

C#代码
  1. int myInt;    //变量类型 变量名  
  2. myInt = 10; //初始化  
  3. int myInt2 = 10; //变量类型 变量名 = 初始化值  
  4. int myInt3, myInt4; // 多个相同类型的变量在同一行一起声明  
  5. int myInt5 = 11, myInt5 = 12; //多个相同的类型的变在同一行一起声明并初始化  


C#变量在声明后必需要先初始化才能访问,否则编译会报错。如上面代码中 myInt3 和 myInt4 还没有初始化。

C#代码
  1. using System;  
  2.   
  3. class MyInit  
  4. {  
  5.     static void Main()  
  6.     {  
  7.         double r = 2, h = 3;  
  8.         double v = 3.14159 * r * h;  
  9.         Console.WriteLine("V is " + v);  
  10.     }  
  11. }  


变量的作用域、生命周期:

C# 可以用{}来定义程序,一个程序块就是一个作用域,作用域可以嵌套,在外层作用域声明的变量对内层的代码是可见的,反之,内层作用域声明的变量对外屋来说 不可见。

C#代码
  1. void myfun()  
  2. //外层代码块开始  
  3.     int a;  
  4.     { //内层代码块开始  
  5.         int b;  
  6.         a = 1;  
  7.     } //内层代码块结束  
  8.     a = 2;  
  9.     b = 3; //出错,因为 b 声明于内层代码块,外层不能访问  
  10. //外层代码块结束  

常见运算符:+、-、*、/、%、++、--

关系运算符:==、!=、>、<、>=、<=

逻辑运算符:&、|、^、||、&&、!
^ 表示逻辑 XOR
C# 中 && 和 || 是 AND(&) 和 or(|) 的“短路”版本,意思是如果第一个检查满足的话那就不再进行查运算符后面的检查。

赋值:=

复合赋值:+=、-=、*=、/=、%=、&=,|=,^=

强制类型转换:(type) expression,type 是期望的类型。
(int) myExpression

基本数据类型:

整型:sbyte(8位),byte(8位),short(16 位),ushort(16位),int(32位),uint(32位),long(64位),ulong(64位)
浮点型:float(32位),double(64位),decimal(128位)
其它类型:bool(16位),char(16位),string
整数默认为 int 类型,浮点数默认为 double 类型,decimal 精度最高,常用于货币计算。char 表示的是一个 Unicode 字符,string 几乎没有长度限制。


2、静态变量和非静态变量

静态变量是带有 static 修饰符的变量,不带 static 的非静太变量称为实例变量。

C#代码
  1. class Class1  
  2. {  
  3.     static int b = 0; //静态变量  
  4.     int a = 0; //非静态变量  
  5. }  

静态变量通过“类名.静态变量名”来调用,类的实例不能调用。如上例访问静态变量 b 时:Class1.b = 1
非静态变量要在类被实例化后通过实例化的对象名来访问。如上例访问非静态变量时:

C#代码
  1. Class1 c1 = new Class1();  
  2. c1.a = 0; //访问非静态变量 a 成功  
  3. Class1.b = 1; //使用类名访问静态变量 b 成功  
  4. c1.b = 1; //这里会出错,因为静态变量不能通用实例引用  

静态变量被所有类的实例对象共享,即一个实例改变了静态变量的值,其它同类的实例读到是改变后的新值,非静态变量是不共享的。
静态变量生命周期从类装载直到类消亡,非静态变量存在期从类实例创建到实例消亡。

 

3、局部变量、数组元素、值参数、引用参数、输出参数

局部变量指在独立程序块、for、switch 或 using 语句中声明的变量,它只在范围内有效。
一般参数的使用:

C#代码
  1. int i = 1, j = 2;  
  2. //i 和 j 是一般参数,一般参数传递进函数的是参数的拷贝值  
  3. int add(int i, int j)  
  4. {  
  5.     return i + j;  
  6. }  
  7.   
  8. main()  
  9. {  
  10.     print(add(i, j));  
  11. }  

引用参数的使用:

C#代码
  1. int i = 1, j = 2;  
  2. //void 表示函数无返回值或可以说是返回 void 类型,main 可以不写,这里的 i 和 j 是引用参数,ref 和 out 参数直接修改内存中的值。  
  3. {  
  4. void add(ref int i, ref int j)  
  5.     i = i + j  
  6. }  
  7.   
  8. main()  
  9. {  
  10.     add(i, j);  
  11.     print(i);  
  12. }  

ref 和 out 的区别:

ref 要求参数在传递之前进行初始化,而 out 要求在函数中对参数进行初始化。所以,ref 是输入输出参数,而 out 是输出参数。


4、常量


常量的值固定不可改变。

静态常量:

const 声明的常量叫静态常量,声明时必须初始化,且只能用常数值。
常量声明语法:属性修饰符 const 类型 名称 = 值
属性修饰符包括:new、public、protected、internal、private
类型包括:sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string、enum-type(枚举类型)和 reference-type(引用类型)。

C#代码
  1. class Class1  
  2. {  
  3.     const double PI = 3.14; //常量 PI 作为一个字段或属性  
  4.     myfun()  
  5.     {  
  6.         const int i = 2; //i 作为一个本地常量  
  7.     }  
  8. }  

动态常量:

readonly 声明的常量叫动态常量,在声明时可以不初始化,但必须在每个构造函数中初始化,可能使用变量值初始化,可以作为一个实例的成员或一个静态类的成员。

C#代码
  1. class Class1  
  2. {  
  3.     readonly float VALUE1; //动态常量 VALUE,最好用大写字母  
  4.     readonly int VALUE2 = 3; //动态常量 VALUE  
  5.     readonly StringBuilder SB1;  
  6.     public myfun()  
  7.     {  
  8.         VALUE1 = 9.80F; //9.80后面的 F 表示强制常量类型是 float 类型,long 为 L,uint 为 U,ulong 为 UL,decimal 为 M  
  9.          
  10.         sb1 = new StringBuilder();  
  11.     }  
  12.     public myfun(float value) //每个构造函数中都要初始化,而且可以使用变量  
  13.     {  
  14.         VALUE1 = value;  
  15.     }  
  16. }  

 

5、C# 程序典型框架

C#代码
  1. using System; //引用 .NET 框架中的类库资源  
  2. namespace YourNamespace //命名空间  
  3. {  
  4.     class YourClass //类  
  5.     {  
  6.     }  
  7.      
  8.     struct YourStruct //结构  
  9.     {  
  10.     }  
  11.      
  12.     interface IYourInterface //接口  
  13.     {  
  14.     }  
  15.      
  16.     delegate int YourDelegate(); //委托  
  17.      
  18.     enum YourEnum //枚举  
  19.     {  
  20.     }  
  21.      
  22.     namespace YourNestedNamespace //嵌套的命名空间  
  23.     {  
  24.         struct YourStruct //结构  
  25.         {  
  26.         }  
  27.     }  
  28.      
  29.     class YourMainClass //应用程序主类  
  30.     {  
  31.     /* C# 可执行程序入口是 Main 方法,程序的执行从 Main 方法开始, 
  32.     到 Main 方法结束,但动态连接库 DLL 程序可以没有 Main 方法,入口 
  33.     方法唯一且为一个类中的静态方法,通常无返回值 void(也可以返回 
  34.     int),通常传递进该方法的是字符串数组类型的命令行参数 */  
  35.         static void Main(string[] args) //入口  
  36.         {  
  37.             int myINT; //语句以;结束  
  38.             string    myString; //编译器会忽略空白字符(空格/回车/Tab)  
  39.             myINT = 10; //编译器对大小写敏感  
  40.         }  
  41.     }  
  42. }  


 

[本日志由 parno 于 2010-08-22 03:34 AM 编辑]
上一篇: IE6、7、8 和 Firefox、Chrome 兼容性 Hack
下一篇: 中星9号直播卫星(中九)刷机经验谈
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: .NET dotNet C# C
相关日志:
评论: 0 | 引用: 0 | 查看次数: 8421
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 500 字 | UBB代码 关闭 | [img]标签 关闭