.NET 能够干什么呢?android
一、桌面应用程序 (WinForm )编程
二、internet 应用程序(asp.net)数组
三、手机应用开发(wp7)好像如今C#也能开发android应用了asp.net
如今主要有两个方向C/S和B/S,各有千秋,并且有向B/S移植的趋势。函数
.NET平台上集成了多种语言,只要符合CLS的语言开发的应用均可以在该平台上运行。学习
如今C#是微软官方推荐的平台开发语言,他能把.NET的效果发挥到极致。spa
关于.NET的有关介绍,在这里就不在赘述。。。。。。。如今只是把我这段时间以来的学习总结一下和你们分享。请大牛指正。.net
1、关于C#学习笔记指针
C#中常见的j简单数据类型有int char double bool string decimal.等等调试
在使用变量的时候的三种方法有:先申明再赋值,定义变量时直接赋值,一次定义多个同类型变量个变量之间用,隔开以;结束。再分别赋值
变量命名规则
●变量名必须以字母开头
●变量名只能由字母、数字和下划线组成,而不能包含空格、标点符号、运算符等其它符号。
●变量名不能与C#中的关键字名称相同。
●变量名不能与C#中的库函数名称相同。
但在C#中有一点是例外,那就是容许在变量名前加前缀“@”。在这种状况下,咱们就可使用前缀“@”加上关键字做为变量的名称。这主要是为了与其余语言进行交互时避免冲突。由于前缀“@”实际上并非名称的一部分,其它的编程语言就会把它做为一个普通的变量名。在其它状况下,咱们不推荐使用前缀“@”做为变量名的一部分。
运算符
链接符+两边参与运算的数据类型为数字则表示数学上的加法,两边参与运算的数据有一个是字符类型那么他表示链接的意义
1)算术运算符:+ - *(乘) % (取余)/(除法) 他们都是二元运算符 要求参与操做的的数据类型必须同样而且运算结果与操做数类型同样
2)在算术表达式中改变运算顺序正使用小括号
复合运算符
+= - = /= *=
关系运算符
< > ==(相等比较)>= <= !=
逻辑运算符
&&与 ||或 !(非,用于bool型)
&& 和||的短路问题: &&链接的表达式第一个错误将不计算第二个, || 链接的表达式第一个正确将不计算第二个
转义字符
当咱们须要在字符串中输入一些特殊字符时,好比半角引号,换行,退格就须要转义字符。
转义字符是一个字符,它由 \+一个字母来组成具备特殊意义的
\n换行 \b backspack 退格 \t tab 有多个空格组成有行与行对齐的功能
\\表示一个\第一个为转义符,第二个为特殊字符
@功能
在字符串前面加一个@有两种意义
1) 字符串中若是\,则再也不理解为转义字符。
2) 是字符串能够换行
3) 在字符串前面加一个@,则字符串中用两个“”表示一个“
自增自减
++ -- 有前自加后自加 前自减后自减
Int age= 18 ; int sum=age ++ -10;此代码age是后加。因此在运算时,age++取age原值参与运算,因此sum=8;
Int age =18; int sum =++age -10;此代码age是前自加,因此在运算时++age先取通过运算后的值19在参与新运算因此sum= 9。
总之,不论是++age仍是age++,通过运算后,age的值都进行了+1 运算
C#中通常状况下一元运算符的优先级大于二元运算符的优先级
C# 中的数据类型
C#中全部的类型按照存储方式分为两类:值类型,引用类型。C#数据类型包括:值类型(简单类型、结构类型、枚举类型),引用类型(类类型、数组类型、接口类型、委托类型 字符串类型string ),指针类型。
值类型的变量包含的是数据自己,而引用变量包含的是一个地址,这个地址指向包含实际数据的内存。值类型变量通常存储在堆栈中,而引用类型的变量通常存储在托管堆中。对于引用类型的变量要注意区分变量自己和变量所引用的对象。下面的代码定义了一个值类型的变量和引用类型的变量: int i=6; Form form1=new Form();
注意:可空(Null)引用类型、自定义类型、string、大部分类都是。
不可空的:值类型。Int double long bool decimal DateTime等。Int ? 就变为可空的int类型
匿名类型: var news= new {Title=”asda”,Msg=”dfdf” }
常量
语法:const 类型 常量名 = 常量值;
Const double PI= 3.14;
只能在定义时 赋值,在其余地方不容许赋值。
枚举:
让咱们定义一种枚举类型而且在定义这种类型时咱们要指定这个类型全部的值。
语法:enum 本身起的类型名称 { 该类型全部的值列出用逗号隔开};
枚举的定义,通常和类定义在同一个级别。这样,在同一个命名空间下的全部类型就均可以使用这个枚举了。(方法中或类中都能定义)。
枚举的做用:
1 限制用户不能随意赋值,只能在定义枚举时列举的值中选择。
2 不须要死记每个值是什么,只须要选择相应的值。
注意:定义枚举时值不能是int类型!
枚举类型的变量是有默认编号的能够强制转换成int类型,第一量默认为0,后面依次加1,也能够把第一个枚举量赋值为其余整数
能够把字符串转换成定义的枚举类型 语法为 (本身定义的枚举的类型名)(Enum..Parse(typeof(自枚举类型名),待转字符串);
结构
1) 好比咱们上课讲的为了存储一我的的信息,要申明一组变量。当咱们要存储N我的的信息时,就要申明N组变量,麻烦。
2) 存储一我的的信息的这几个变量没有关系,容易记错。
语法:
访问修饰符 struct 结构名{定义结构成员}(访问修饰符为public private protect等)
注意定义一个结构后,就能够直接声明相应的变量了。声明好变量后,经过变量名.成员名 来访问结构成员
数组
1 数组:能够帮咱们一次声明多个同类型的变量,这些变量在内存中是连续存储的。
2 语法 :数据类型 [ ] 数组名 = new 类型 [数组长度]; string [] names = {"zhang san ","lisi ","wangwu "};声明字符串数组
// int [] score = new int [5];//声明了一个长度为5的数组,名为score ;通俗的说就是声明了一个数组,里面包含5个int 类型的变量,数组名叫score 里面的5个int 类型的变量叫作数组的元素。
3 如何访问数组:经过下标来访问数组。 数组名 [编号] 向第0个元素赋值3. score[0] = 3
Int 类型数组一旦声明里面的元素默认初始化为0.
数组元素的下标从0 开始
经过 数组名.length 能够得到数组长度。 Console. Clear();能够用来清屏。
保存多个值,几乎任意类型均可以声明数组。
两种声明方法 Int [ ] nums =new int [3] int [ ] nums ={3,5,8}
Int [ ] nums = new int [3]{3,5,7} 个数和声明数必须一致
Int [ ] nums = new int [5]{1,2,3}是错的
Int [ ] nums = new int [] {5,3,6}是正确的,能够省略数组元素个数
N个元素互换 交换N/2次
自动转化(隐式转化)与强制转化
Double 范围比decimal广,但精度比他小,二者不能相互转化。
参与运算(算术运算和赋值运算)的操做数和结果类型必须一致 double a =10/3; 结果为3
在自动转化中,转化是不会丢失精度的,若是丢失精度那么这个转化确定不会自动执行
常常见到的就是,参与运算的两个操做数一个是int 另外一个是double 那么int 类型会自动转换成double类型。
Double pi=3.14; int i=(int)pi;把double类型强制转换成int类型。( Int a=9.14 ;是错的)
String age =(int ) console.readline(); int a = (int)”33”;是错误的;由于强制类型转换要求待转换的类型和目标类型必须都为数字。
Int 变量= Convert.ToInt32(待转字符串);上面语句的意义是把待转换的字符串转换成int类型后赋给变量
String a =”3”; int c = convert. toint32(a);并无把a 的值改变 ,而是把字符串转化为int型赋给 c.
Convert.tostring()
Int a = int .parse (string );把字符串转换成整形。注意若是转化失败就会出错,用Try catch捕获建议用int.tryparse()
C#中异常捕获如何完成
Try
{有可能出现错误的代码写在这里
}
Catch{出错后的处理
catch块能够同时有不少(如上)可是只能捕获与catch内捕获类型一致的异常,好比catch(int nError)只能捕获int型异常,catch(CMyexception &Error)只能捕获CMyexception型异常在有多个Catch时捕获的异常类型从精确到普遍的Exception
catch 子句使用时能够不带任何参数,这种状况下它捕获任何类型的异常,并被称为通常 catch 子句。它还能够接受从 System.Exception 派生的对象参数,全部的异常斗殴才可以该类继承
在同一个 try-catch 语句中可使用一个以上的特定 catch 子句。这种状况下 catch 子句的顺序很重要,由于会按顺序检查 catch 子句。将先捕获特定程度较高的异常,而不是特定程度较小的异常。
}
finally
{
//无论什么状况都会执行,包括try catch 里面用了return ,能够理解为只要执行了try或者catch,就必定会执行 finally
}
程序这样执行:若是try中的代码没有出错,则程序正常运行try中的内容后不会执行catch中的内容。若是try中的代码一旦出错程序当即跳入catch中执行,try后面的代码再也不执行
If结构
If(条件){语句;}
首先判断条件的结果;若是条件为true,则执行语句,若是为false 则跳过语句,执行后面的语句。If后的括号中药能计算成bool型
If else及结构
If(表达式)
{语句1;}
Else
{语句2;}
if()
{}
else if()
{
}
else if()
{
}
else
{
}//从if开始判断只要有一个知足条件就跳出语句体若是都不符合就执行else语句
Switch 的结构
Switch ( 表达式)
{
Case 值1: 语句块1;break;
Case 值2: 语句块2;break;
Case 值3: 语句块 3; break;
Default : 语句块 4;break;
}
首先计算表达式的值,而后比较case后面的值,与case的顺序无关,也与default的位置无关。若有匹配项,则执行匹配项, 直到break跳出switch。若是没有匹配项执行default 到break跳出 switch语句。
While 循环
While(条件表达式)
{
语句体;(循环体变量改变)
}
先执行,再判断
Do { 循环体;}
While(条件);
执行过程,1 执行循环体,执行完循环体转向2,
2 判断条件是否成立,若是条件为true,则转向1,若是条件为false,则转向3
3 跳出循环,循环结束
FOR循环
语法:
For (表达式1; 表达式2 ;表达式 3 )
{循环体 ;}
For 循环用于已知循环次数的循环。
通常状况下表达式1 用于定义循环变量和对循环变量赋初始值
表达式2 是循环条件
表达式3 用于改变循环变量的值
执行过程:
第1步 :计算表达式1 ,转向第2步。
第2步 : 计算表达式2(循环条件),若是表达式2的值为true转向第3步;若是为false,转向第5步 。
第3步 : 执行循环体,转向第4 步。
第4步 : 执行表达式3, 转向第2 步。
第5 步: 循环结束。
Break 用于循环 来结束所在循环能够用于switch case中 跳出switch
Continue 用于while 循环 当即结束本次循环(continue后的程序不在执行,判断循环条件,若是成立则进行下一次循环,不然结束循环.。
对于for循环,到达continue后直接执行表达式3 ,在判断循环条件是否成立。
输入输出函数
占位符{数字}的使用!占位符有{数字}组成,数字有0 开始编号{0}{1}{2}编号与后面的参数对应。编号小于参数的个数
console.WriteLine();有多个参数,输出时.输出的都是第一个参数中的内容. 从第二个参数开始都是用来替换第一个参数中的占位符.的值,因此从第二个开始要不要输出,就要看第一个参数中有没有相关的占位符。
Console.ReadLine();用于让用户在键盘上输入一句话,当程序执行到下面一句话就会暂停而后等待用户从键盘上输入一句话按回车键将继续执行
Console.readline凡是用户输入的东西都安字符串来进行接收
String input= Console.ReadLine();
三元表达式
表达式1 ?表达式 2: 表达式3
执行过程:首先计算表达式 1 ,表达式1 应该是一个可以计算成bool类型的值,若是表达式1的值为true,则表达式2的值做为整个表达式的值,若是表达式1 的值为false,则表达式3,的值做为整个表达式的值
表达式2 和表达式3 的值类型要兼容
程序调试
设置断点
单步运行(按 F10 或F11逐句执行)监视、判断正确与否
观察变量