一、运算符与表达式——语言中的标点符号
1、运算符
- 算术运算符:+、—、*、/、%、++、——
Notice:%表示求余,没有乘方运算;
尽量不要在复杂的程序里面写,C#目的是使程序简单易懂。
- 关系运算符:>、<、>=、<=、==、!=
Notice:等于及不等于的写法,与VB不同
- 逻辑运算符:!(逻辑非)、&(逻辑与)、|(逻辑或)、^(逻辑异或)、&&(短路与)、||(短路或)
Notice:条件逻辑运算符,也叫短路(short—circuit)逻辑运算符
&&:第一个操作数为假,则不判断第二个操作数
||:第一个操作数为真,则不判断第二个操作数
E.g: MyDate=d;
If((d!=null)&&(d.day>31))
{
//do sth with d
}
- 位运算符:&、|、^、~、>>、<<
- 赋值运算符:=、(扩展赋值运算符:+=、—=、*=、/=)
Notice:当”=”两侧的数据类型不一致时,可以适用默认类型转换或强制类型转换(casting)原则进行处理。E.g: long l = 100; int i = (int)l;
特例:可以将整形常量直接赋值给byte、short、char等类型变量,且不需要进行强制类型转换,只要不超出其表数范围。E.g: byte b = 12; //合法 byte b =4096; //非法
- 字符串连接运算符:+
E.g: int i=300 + 5;
String s = “hello,” + “world!”;
Notice:“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
E.g: string s = “hello” + 300 + 5 + “号”; //输出hello,3005号
2、表达式:符合一定语法规则的运算符和操作数的序列
表达式的值:对表达式中的操作数进行运算得到的结果
表达式的类型:表达式的值的数据类型
类型转换:
(1)赋值时:当”=”两侧的数据类型不一致时,可以适用默认类型转换或强制类型转换原则进行处理。特例,可以将整型常量直接赋值给byte、short、char等类型变量,不需要进行强制类型转换,只要不超出其表数范围。E.g: byte b = 12; //合法 byte b =4096; //非法
(2)表达式中的类型转换
当有不同种类的混合运算时:int long float double
Notice:整型提升,所有的byte、short、char等转为int
编程提示:字符串转成数值:double.Parse(s)、int.Parse(s)
数字转成字符串:10.ToString()、”” + 10
Convert类:Convert.ToInt32(textbox1.Text)、Convert.ToDateTime(“2009-10-01 14:00”)
3、运算符优先级与结合性
单目>算术>关系>逻辑>三目>赋值
大部分从左至右结合
二、流程控制语句——语言中的语句
结构化程序设计中的三种基本流程:顺序、分支、循环
1、简单语句:方法调用语句及赋值语句,没有表达式语句这一说
E.g:Console.Write(“Hello Word”); b = a>0?a:-a; d=int.Parse(s);
2 + 3; //错误
2、分支语句——if
if(条件表达式)
语句块
else
语句块
E.g: LeapYear.cs
if((year%4 == 0 && year%100 == 0)|| year%400 == 0)
Console.WriteLine(year+“是闰年。”);
else
Console.WriteLine(year+“不是闰年。”);
小技巧:注意书写格式,特别是缩进
将后面的花括号去掉,再重新输一下,就会自动排版;也可以按Ctrl+E+D(格式文档)或Ctrl+E+F(格式化选中部分)
3、多分支语句——switch语句
Switch(expression){
Case const1:
statement1;
break;
Case const2:
statement2;
break;
……
Case constN:
statementN;
break;
default:
Statement_default;
break;}
Notice:与C++不同的地方:a、变量除了整型、枚举型,还可以用字符串;不能随便贯穿,必须有break;(除非几个case连起来,中间没有别的语句)
4、循环语句
(1)循环语句功能:语句在循环条件满足的情况下,反复执行特定代码。
(2)循环五要素
A、初始化部分 B、循环条件 C、循环体部分 D、迭代部分(循环改变) E、结束后处理
E.g: int s = 0;
For(int i = 0;i <=100; i++)
{
S+=i;
}
Console.WriteLine(s);
(3)循环语句分类
A、for循环
Int result =0;
For(初始化部分int i = 0;循环条件 i<=100;迭代部分i++)
{
循环体;result +=i;
}
B、While循环
初始化部分; int result = 0; int i = 0;
While(循环条件i< = 100){
循环体; result += i;
迭代部分; i++;
}
C、do-while 循环(至少执行一次)
Int result =0; int i=0;
do{
循环体; result+=i;
迭代部分; i++;
}while(循环条件i<=100);
5、跳转语句
(1)break语句:结束循环(相当于VB中的exit do,exit for)
(2)Continue语句:进入下一次循环
(3)Goto语句:跳转到某个语句标号。但是会使程序变得混乱,C#中的goto语句可以从内层跳到外层;标号的写法:标识符加个冒号(:)
(4)Try{}catch{}语句:异常捕获