.NET学习记录1
.NET 可以干什么呢?
1、桌面应用程序 (WinForm )
2、internet 应用程序(asp.net)
3、手机应用开发(wp7)好像现在C#也能开发android应用了
现在主要有两个方向C/S和B/S,各有千秋,而且有向B/S移植的趋势。
.NET平台上集成了多种语言,只要符合CLS的语言开发的应用都可以在该平台上运行。
现在C#是微软官方推荐的平台开发语言,他能把.NET的效果发挥到极致。
关于.NET的有关介绍,在这里就不在赘述。。。。。。。现在只是把我这段时间以来的学习总结一下和大家分享。请大牛指正。
一、关于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逐句执行)监视、判断正确与否
观察变量
.NET学习记录1的更多相关文章
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
- UWP学习记录11-设计和UI
UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...
- UWP学习记录10-设计和UI之控件和模式7
UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...
- UWP学习记录9-设计和UI之控件和模式6
UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...
- UWP学习记录8-设计和UI之控件和模式5
UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...
- UWP学习记录7-设计和UI之控件和模式4
UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...
- UWP学习记录6-设计和UI之控件和模式3
UWP学习记录6-设计和UI之控件和模式3 1.按钮 按钮,响应用户输入和引发 Click 事件的控件. 使用<Button>就能创建一个按钮控件了.按钮是 ContentControl, ...
随机推荐
- SpringMVC异常处理机制详解[附带源码分析]
目录 前言 重要接口和类介绍 HandlerExceptionResolver接口 AbstractHandlerExceptionResolver抽象类 AbstractHandlerMethodE ...
- ng-repeat 指令
<!--索引属性:$index,$first,$middle,$last--> <!--样式属性:ng-class-even,ng-class-odd--> <tr ng ...
- mysql查询缓存参数
由人说mysql查询缓存是鸡肋,也许吧,但还是要看场景: 查询缓存: 开启查询缓存:/etc/my.cnfquery_cache_type=1 重启
- poj1700
这题的最坑的地方就是每步可能会有两种情况,这两情况起初我都单独考虑了,但就是没放在一起考虑...wa个不停,果然贪心是一个很考验思维的东西. 这里可以这样考虑,在运人的过程中,河的起始岸最后终将剩下一 ...
- Runtime Error---Description: An application error occurred on the server....
[原]Runtime Error---Description: An application error occurred on the server.... 2010-1-7阅读2010 评论3 D ...
- sass学习笔记1
less在处理CSS动画时,非常恶心,决定转向sass了.sass诞生得比less早,只是因为它是ruby写的,因此受众面够少.但我们不需要自己下编译器或使用命令行,我们可以koala这神器 首先几个 ...
- Ajax Post 与 Get 实例
Ajax的POST实例,index.html <html> <head> <script type="text/javascript"> fun ...
- BigInteger在Java8中的改进
BigInteger在Java8里增加了一组方法: 123 public byte byteValueExact()public int intValueExact()public long long ...
- Read4096
Given API: int Read4096(char* buf); It reads data from a file and records the position so that the n ...
- Oracle 常用数据类型(转)
varchar2(6) 张三 --在jbk中是两个字节,在utm中是三个字节char(6) 张 三 --可以确定长度的用charclob --大存储,没事少用,当多余4000字节时,会用lob来存储, ...