.net 能干什么?
桌面应用程序 winform 有些跟硬件结合去应用,如打卡系统
Internet应用程序 Asp.Net
手机开发WP8
Unity3D【跨平台的】 游戏开发或者虚拟现实(机会) Unity3D主推的脚本是C#, JavaScript也可以
IDE 注意版本问题,版本新增功能
对DotNet ? DotNet Framework .Net 框架 作何理解? 理论二次,三次…提炼
是微软构建的技术平台,可以在该平台上创建各种应用程序,是应用程序所需要的环境,应用程序可以在其上面运行。
.Net 特点?
多语言、跨平台、可扩展、快速高效稳定、多应用、VS.Net、MSDN(微软开发者网络)、
IL 含义作用?
.NET框架中中间语言(Intermediate Language)的缩写,
作用:一是可以实现平台无关性,既与特定CPU无关;二是只要把.NET框架某种语言编译成IL代码,就实现.NET框架中语言之间的交互操作
CLR 含义作用?
Common Lnguage Runtime 公共语言运行库,负责内存分配和垃圾收集,保证应用和底层之间必要的分离
CLS含义作用?
公共语言规范(Common Language Specification,CLS)和通用类型系统一起确保语言的互操作性
通用类型系统 (common type system)
C#官方文档地址
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#\Specifications\2052
代码执行过程
变量
变量开始以字母或下划线开头,不能以数字开头;变量后边可以跟任意字母、数字、下划线
命名规范
camel命名 首单词的首字母小字,后边每个单词首字母大写,多用于给变量命名;Pascal 要求每个单词的首字母都要大写,多用于给类或者方法命名
交换变量
int numberOne = 10;
int numberTwo = 15;
Console.WriteLine("交换前的值为numberOne ={0}, numberTwo ={1}", numberOne, numberTwo);
numberOne = numberOne - numberTwo;
numberTwo = numberOne + numberTwo;
numberOne = numberTwo - numberOne;
Console.WriteLine("交换后的值为numberOne ={0}, numberTwo ={1}", numberOne, numberTwo);
转义符
换行 \r\n: windows操作系统不认识\n,只认识\r\n
@符号
1、取消\在字符串中的转义作用,使其单纯的表示为一个'\'
2、将字符串按照编辑的原格式输出:字串换行输出
string str = @"今天天气很好
我出去散步"; //\r\n在windows平台是换行
File.WriteAllText(@"C:\Users\Administrator\Desktop\new.txt", str);
double number = 10 * 1.0 / 3;
Console.WriteLine("{0:0.000}", number); //保留三位小数
类型转换
类型兼容
小转大 自动转换
大转小 强制转换
类型不兼容时
用Convert转换 条件是看起来能转过去 比如"123" 转 123
1 //输入一个天数,算出天数中包含几周几天 2 int numberOfDays = 0; 3 Console.WriteLine("请输入天数:"); 4 5 string inputDays = Console.ReadLine(); 6 numberOfDays = Convert.ToInt32(inputDays); 7 8 int weeks = 0; 9 int days = 0; 10 weeks = numberOfDays/7; 11 days = numberOfDays%7; 12 Console.WriteLine("{0}天包括{1}周{2}天",numberOfDays,weeks,days); 13 14 //实现107653秒是几天几小时几分钟几秒?1小时 = 60*60 = 3600秒;1天=24*3600 = 86400秒 1天24小时 15 16 /* 第一种方法 17 int allSeconds = 107653; 18 days = allSeconds /86400; 19 int hours = (allSeconds - days*86400)/3600; 20 int minutes = (allSeconds-days*86400 - hours *3600)/60; 21 int seconds = allSeconds - days*86400 - hours *3600 - minutes*60; 22 */ 23 24 //第二种方法 25 Console.WriteLine("请输入秒数"); 26 int seconds = Convert.ToInt32(Console.ReadLine()); 27 days = seconds/86400; 28 seconds = seconds%86400;//计算剩余的秒数 29 int hours = seconds/3600; 30 seconds = seconds%3600; //计算剩余的秒数 31 int minutes = seconds/60; 32 seconds = seconds%60; //计算剩余的秒数 33 34 Console.WriteLine("{0}是{1}天{2}小时{3}分钟{4}秒",seconds,days,hours,minutes,seconds);
运算符
判断闰年
Console.WriteLine("请输入年份:");
int year = Convert.ToInt32(Console.ReadLine());
if(year%400 == 0||(year%4==0&&year%100!=0))
{
Console.WriteLine("输入的年份{0}是闰年",year);
}else {
Console.WriteLine("输入的年份{0}不是闰年",year);
}
异常捕获
try
{
//可能会出现 异常的代码
//如果try中的代码出现了异常,那怕这行出现异常的代码后面还有一百行都不会执行了,而是直接跳到catch中执行代码
//......后边的代码不执行
}
catch
{
//如果try 里边没出现异常,这里的代码则不执行,如果出现了异常,则执行这里的代码
}
比较三个数大小
1 Console.WriteLine("请输入第一个数字:"); 2 int numberOne= Convert.ToInt32(Console.ReadLine()); 3 4 Console.WriteLine("请输入第二个数字:"); 5 int numberTwo =Convert.ToInt32( Console.ReadLine()); 6 7 Console.WriteLine("请输入第三个数学:"); 8 int numberThree =Convert.ToInt32(Console.ReadLine()); 9 10 if(numberOne>numberTwo) 11 { 12 if(numberOne>numberThree) 13 { 14 Console.WriteLine("1最大的数字是{0}",numberOne); 15 } 16 else 17 { 18 Console.WriteLine("2最大的数字是{0}",numberThree); 19 } 20 }else //第一个数字小于第三个数字 21 { 22 if(numberTwo>numberThree) 23 { 24 Console.WriteLine("3最大的数字是{0}",numberTwo); 25 } 26 else 27 { 28 Console.WriteLine("4最大的数字是{0}",numberThree); 29 } 30 }
switch-case
if else-if一般用来处理多条件的【区间性】的判断。
而swtich-case一般用来处理多条件的【定值】判断。if else-if转成switch来实现,核心是把区间判断转成定值判断
语法:
switch(表达式或者变量的值) 1 "张三" 'c'
{
case 值1:要执行的代码;
break;
case 值2:要执行的代码;
break;
case 值3:要执行的代码;
break;
case 值4:要执行的代码;
break;
.......
default:要执行的代码;
break;
}
执行过程:程序运行到switch处,首先计算switch所带的小括号中的表达式或者变量的值,
拿着计算出来的结果,去跟每个case后面所带的值进行匹配,一旦匹配成功,则执行该case
所带的代码,执行完成后,遇到break,跳出switch-case结构。
如果跟每个case所带的值都不匹配,则看当前switch-case是否存在default,如果有default,则
执行default中的代码,如果没有,则跳出switch-case结构。
default是可以省略的。
需要注意的地方:
1、break在switch-case中起到的作用是跳出switch-case结构,不可以省略。
2、switch所带的小括号中计算出来的值的类型,必须跟case所带的值的类型一致。
1 Console.WriteLine("请输入信息: "); 2 3 int score = Convert.ToInt32(Console.ReadLine()); 4 switch (score / 10) 5 { 6 case 9: 7 Console.WriteLine("A"); 8 break; 9 case 8: 10 Console.WriteLine("B"); 11 break; 12 case 7: 13 Console.WriteLine("C"); 14 break; 15 case 6: 16 Console.WriteLine("D"); 17 break; 18 default: 19 Console.WriteLine("输入有误,程序退出"); 20 break; 21 }
输入年份,月份,判断该月份的天数
1 Console.WriteLine("请输入年份"); 2 try 3 { 4 int year = Convert.ToInt32(Console.ReadLine()); 5 Console.WriteLine("请输入月份"); 6 try 7 { 8 int month = Convert.ToInt32(Console.ReadLine()); 9 int day = 0; 10 11 if(month>=1&&month<=12) 12 { 13 switch(month){ 14 case 1: 15 case 3: 16 case 5: 17 case 7: 18 case 8: 19 case 10: 20 case 12: 21 day = 31; 22 break; 23 24 case 4: 25 case 6: 26 case 9: 27 case 11: 28 day = 30; 29 break; 30 31 case 2: 32 if(year%400==0||(year%4==0&&year%100!=0)) 33 { 34 day = 29; 35 } 36 else{ 37 day = 28; 38 } 39 break; 40 41 default: 42 Console.WriteLine("输入有误,程序退出"); 43 break; 44 } 45 Console.WriteLine("{0}年{1}月有{2}天",year,month,day); 46 } 47 else{ 48 Console.WriteLine("月份不在正确的范围1-12内,程序退出!!!"); 49 50 } 51 }//try月份的结尾 52 catch{ 53 Console.WriteLine("输入月份有误,程序退出"); 54 } 55 }//try年份的结尾 56 catch{ 57 Console.WriteLine("输入的年份有误,程序退出。"); 58 }
输入班级人数,依次输入成绩,计算学生平均成绩和总成绩
1 //循环体:输入成绩 2 //循环条件:输入的学生成绩的数量小于学生人数 3 //break: 跳出switch case 结构;跳出while if for 等结构 4 5 int studentNumber = 0; 6 while(true) 7 { 8 try 9 { 10 studentNumber = Convert.ToInt32(Console.ReadLine()); 11 break; 12 } 13 catch 14 { 15 Console.WriteLine("输入的格式有误,请重新输入学生人数"); 16 } 17 } 18 int i = 1; 19 double sumScore = 0; 20 int studentScore =0; 21 22 Console.WriteLine("学生人数为{0}",studentNumber); 23 while(i<=studentNumber) 24 { 25 Console.WriteLine("请输入第{0}个学生的成绩",i); 26 studentScore = Convert.ToInt32(Console.ReadLine()); 27 28 sumScore+=(double)studentScore; 29 i++; 30 } 31 Console.WriteLine("{0}个学生的总成绩为{1},平均成绩为{2}",studentNumber,sumScore,sumScore/studentNumber);