1、C#基本语法,变量的类型、定义和使用 常量的定义 运算符的运算法则和优先级 流程控制语句,2.2.1 变量,1 变量的命名规则:基本上与C+相同,不同之处是C#的变量名必须以字母开头。 变量的使用:先定义后使用 变量的类型:(共有七种类型),变量的类型,静态变量 以static关键字修饰 非静态变量 不以static关键字修饰 数组元素 值参数 不以ref修饰的参数 引用参数 以ref修饰的参数 输出参数 以out修饰的参数 局部变量 定义在方法内部的变量,class VarTest public static int x; /x是静态变量。int y; /y是非静态变量。/v是数组,a是值参
2、数,b是引用参数,c是输 /出参数,d是局部变量。void f( int v, int a, ref int b, out int c )int d = 1;c = a + b+; ,2.2.2 常量,常量定义的格式:修饰符 const 数据类型 常量名= 初值; 例如:public const double PI = 3.1415926;注意:常量的名字一般用大写字母。,2.3.1 运算符与优先级,与C+相同 sizzeof 运算用于获得值类型的大小(以字节为单位),不适用于引用类型。 测试操作符 is asis操作符用于动态地检查运行时对象类型是否和给定的类型兼容。as操作符用于通过引用转
3、换或装箱转换将一个值显式地转换成指定的引用类型。as转换不会产生异常。如果转换不成功,结果值为null。,例题, Console.WriteLine( 1 is int);Console.WriteLine( 1 is float);Console.WriteLine( 1.0 is float);Console.WriteLine( 1.0 is double); ,new,用于创建一个新的类型实例,有3种形式: 对象创建表达式 数组创建表达式 委托创建表达式 例: class A; A a = new A( );int arr = new int 10;delegate double Df
4、unc(int x);Dfunc f = new Dfunc(5);,typeof,用于获得某一类型的System.Type对象。 例: Console.WriteLine( typeof( int ) ); Console.WriteLine( typeof( System.Int32 ) ); Console.WriteLine( typeof( string ) ); Console.WriteLine( typeof( double ) ); Console.WriteLine( typeof( long ) );,checked和unchecked,用于整型算术运算时控制当前环境中的
5、溢出检查。使用checked操作符保证进行溢出检查,如果有溢出就会引发一个异常,而使用unchecked操作符相反,即使产生溢出,也不会引发异常。 例:,short c1 = 32767;short c2 = 32767;int c3 = checked ( ( short ) ( c1 + c2 ) );Console.WriteLine( “被检查的值是: 0“, c3 );const int c1 = int.MaxValue;const int c2 = 2;int c3 = unchecked ( c1 * c2 );Console.WriteLine( “未被检查的值是: 0“,
6、c3 );,checked 和 unchecked还可以对程序块进行检查控制,即对程序块中所有的运算都执行checked 或 unchecked操作。 格式:checked /或者是 unchecked /程序块,2.3.2.1 选择语句,if 语句和C+完全相同 switch 语句也叫case语句 switch语句与C+和Java均不完全相同,每个case块的最后一句一定要是break语句,或者是goto语句。switch语句常用形式为: switch (表达式) case 常量表达式1: 语句序列1case 常量表达式2: 语句序列2default: 语句序列 ,注意:a) 当找到符合条件
7、表达式值的case标记时,如果其后有语句序列,则它只会执行此case块中的语句序列,不会再对其它的case标记进行判断,所以才要求每个语句序列的最后一条语句必须是break语句, 但是有一个情况例外:如果某个case块为空,则会从这个case块直接跳到下一个case块上。b) 如果case后有语句,则此case的顺序怎么放都无所谓,甚至可以将default子句放到最上面。因此,在一个switch中,不能有相同的两个case标记。,1.使用switch语句,完成对成绩等级的评定,using System; namespace SwitchExample public class Programp
8、ublic static void Main()Console.Write(“请输入成绩:“); /从键盘接收一行字符string str = Console.ReadLine(); /转换为整型int i = Int32.Parse(str.Trim();if (i 100 | i 0)Console.WriteLine(“成绩不在0-100范围内“);,elseswitch (i / 10)case 10: Console.Write(“满分,“); goto case 9;case 9: Console.WriteLine(“优秀“); break;case 8:case 7: Cons
9、ole.WriteLine(“良好“); break;case 6: Console.WriteLine(“及格“); break;default: Console.WriteLine(“不及格“); break;Console.ReadLine(); ,2.3.2.2 循环语句,包括:for语句,与C+相同while语句,与C+相同do-while语句,与C+ 相同foreach语句,用于对集合进行操作。,定义一个锯齿形数组,存放以下的几个字符串:”Hello!”、“Nice to meet you!”、”How old are you?” 、”I am twenty!”试编写程序,求这些字
10、符串中字母e出现的次数。 int NumOf = 0; for ( i = 0; i str.Length ; i+ ) for ( j = 0; j stri.Length; j+ )if ( strij = e )NumOfT+; Console.WriteLine(“The number of e is 0!“, NumOfT);,例.使用for语句控制循环体,foreach语句foreach语句用于逐个提取集合中的元素,并对集合中每个元素执行语句序列中操作的场合。foreach语句特别适合对集合(Collection)对象的存取。其一般形式为:foreach ( 类型 标识符 in 表
11、达式 )语句序列,例. foreach语句的使用,阅读代码。,using System; namespace foreach_use1 class Class1STAThreadstatic void Main(string args),int odd = 0, even = 0;int arr = new int 0, 1, 2, 5, 7, 8,11;foreach ( int i in arr )if ( i % 2 = 0 )even+;else odd+;Console.WriteLine( “Found 0 Odd Numbers,and 1 Even Numbers.“, odd, even ); ,课堂练习,使用foreach语句,编写程序实现求多个字符串中每个字符串的字符个数。这多个字符串是:”Hello”,”John”,”morning”,