C# 的源代码都是以 . cs 结尾的。
namespace 命名空间
C# 是由一个个类组成,类是最小的单元,命名空间来管理类。
严格区分大小写。
程序的基本样式:
namespace Test // 命名空间
{
class Program // 类 最小单元
{
static void Main(String[]args) // 程序入口
{
Console.WriteLine("今日事,今日毕。");
}
}
}
文档注释: ///; 只能写在类、方法、属性的前面。不能用来注释单个变量
代码中的Console.WriteLine()与之前的Console.Write()不同,后者不换行,而前者会在打印之后换行。
常量在声明时赋值,之后是不能修改的。const: const double PI = 3.14
声明变量的语法:数据类型 变量名; double:双精度 999.99
Console.WriteLine("我今天吃{0},明天吃{1}。",today,tomorrow); // 格式化输出
字符类型:char (单引号) 字符串:string (双引号)
自动类型转换:2种不同类型的数据运算,低精度类型会自动转换为较高精度的类型。
以3.5+8为例,显然数字8的精度较低(int),而3.5的精度较高(double),所以,8会自动转换为double型,即转换为3.5+8.0进行运算,结果为11.5。
强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换; double 型强制转换为int型将失去小数部分
int i=(int)3.0;
2个整数相除,结果仅保留整数部分,小数部分会被舍去。 /: 除法
取余运算符%的作用是求两个数字相除的余数。 %常常用来检查一个数字是否能被另一个数字整除。 如果输出0,表示没有余数,即number能够被2整除(是偶数);如果输出1,表示有余数,即number不能被2整除(是奇数)。
如果与其他运算在同一语句中,++写在变量前面或后面,算法不一样,请看下例:
Console.WriteLine(age++);作用等同于下面两句:
Console.WriteLine(age);//先打印
age=age+1;//后自加
Console.WriteLine(++age);作用等同于下面两句:
age=age+1;//先自加
Console.WriteLine(age);//后打印
比较运算的结果,都是布尔类型( bool )
逻辑运算符用来连接多个 bool 类型表达式,实现多个条件的复合判断。C#中的逻辑运算符包括:逻辑非( ! )、逻辑与( && )、逻辑或( || )。
优先级相同的运算符从左向右计算(赋值运算符相反)。
C#运算符的优先级请参考下面的顺序:
①括号。括号优先级最高。
②一元运算符。有些运算符两边有2个操作数,比如2+3、6%5等等,这些叫做二元运算符。只有一个操作数的叫做一元运算符,它们的优先级高于二元运算符。一元运算符包括:++(自加) 、 --(自减) 、 !(逻辑非)。
③*(乘)、/(除)、%(取余)。
④+(加)、-(减)。
⑤>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
⑥==(等于)、!=(不等于)。
⑦&&(逻辑与)。
⑧||(逻辑或)。
⑨赋值运算符。包括:=、+=、-=、*=、/=、%=。
[图片上传失败...(image-271c6f-1532441123921)]
流程图是程序步骤的图形化表示方法。
条件表达式 ? 分支1 : 分支2
for 循环 ( ; ; ) 中的两个分号是不能缺少的。 特别适合于“已知循环次数”的循环。
[图片上传失败...(image-722c00-1532441123922)]
[图片上传失败...(image-40b083-1532441123922)]
do...while 循环第一次执行循环体是没有经过条件判断的,也就是说会无条件的执行一次循环体
[图片上传失败...(image-41277-1532441123922)]
当程序执行到到 continue; 的时候,会立即停止本次循环体,直接进入下一次循环。 可以使用 continue 关键字,在循环中剔除一些特殊的数据。
break 关键字还可以用在循环中,作用是“结束循环”。
嵌套循环
2个循环嵌套的时候,外层循环体执行一次,内层循环体执行 n 次( n 是内层循环的次数); 内层体被执行的总次数 = 内层循环次数 * 外层循环次数。
数组:
专门存储一组相同数据类型的数据。
数据类型[ ] 数组名 = new 数据类型[长度];
数组经过初始化以后,数组元素有默认的初始值, double 类型为 0.0 , int 类型为 0 , char 类型为 'a' , bool 类型为 false , string 类型为 null 。
多种声明的方式:
[图片上传失败...(image-10bd9c-1532441123922)]
循环条件必须能够遍历每一个数据
开关变量的使用:
[图片上传失败...(image-5b53ed-1532441123922)]
for 循环使我们可以通过索引访问数组元素;而 foreach 循环则可以不依赖索引而读取每一个数组元素。
[图片上传失败...(image-875c50-1532441123922)]
[图片上传失败...(image-b587eb-1532441123922)]
迭代变量 x 只能用于读取数组 num 中的值,但是不能给数组元素赋值
对于一些类似于数组的数据组织方式,它们中有一些是没有元素索引的,对于这些元素,只能通过 foreach 遍历。
二维数组,就是以数组作为元素的数组。
[图片上传失败...(image-39f860-1532441123921)]
int[,] arr = new int[2,3]; //包含2个一维数组,每个一维数组包含3个变量,总共2*3=6个数组元素
我们可以用二维数组管理相关的数据,比如有 4 名同学参加语文和数学两门考试,我们用二维数组存储他们的成绩,每位同学的 2 门课分数,存储在一个一维数组中:
[图片上传失败...(image-6f6970-1532441123921)]
[图片上传失败...(image-1c5e83-1532441123921)]
string[,] info = new string[8, 2] { { "吴松", "89" }, { "钱东宇", "90" }, { "伏晨", "98" }, { "陈陆", "56" }, { "周蕊", "60" }, { "林日鹏", "91" }, { "何昆", "93" }, { "关欣", "85" } };
[图片上传失败...(image-274d90-1532441123921)]
网友评论