1. .net/dotnet:一般指.Net Framewwork框架.一种平台,一种技术
C#一种编程语言,可以开发基于.net平台的应用
2. .net 都能干什么
桌面应用程序 Winform
Internet应用程序,ASP.NET/WedServoce
手机开发 wp7
3. C/S 客户机/服务器模式
B/S 浏览器/服务器模式
4. 方法在类里面,类在命名空间里面
1个项目只能有Main方法 ,Main方法是我们项目的入口方法
5. 变量 语法 数据类型 变量名 =值
6. 数据类型 数值 整型:int ; 非整型:double ;decimal
7. 非数值:char ; string;
1.int 整型,就是整数
2.double 双精度浮点数 就是小数
3.Char 字符 只能存储一个字符,字符要被单引号引起来
4.String 字符串 存储多个字符,用双引号引起来
5.Decimal 一般用于存储财务数据,数据后面要加一个m
8. 变量一定要先声明,在赋值,或者声明时直接赋值
9. 变量命名 以字母,_,@开头
1.起的变量名不能与C#关键字重名
2.大小写是敏感的
3.同一个变量名不允许重复定义(先这么认为);
10. 定义变量时,变量名要有意义
Camel命名法:首个单词的首字母小写,其余单词的首字母大写
Pascal命名法:每一个单词第一字母都大写
11. 赋值运算符 =
+号可以连接2个字符串
占位符从0开头,
12. C#的转译符由:/+一个字母来组成,来表示一个特殊字符
\”表示引号 \\表示\ 第一个\表示转译
13. 可以在一个字符串的前面加一个@符号,表示@符后面的这个字符串中的\没有转译的意思
14. 常用的转译符 \n \b\t \\
\n表示换行
\b表示退格
\t表示对齐
15. 强制类型转换 (数据类型名)待转换的值
一切类型都可以转换成string类型
16. C#中异常捕获
Try
{
可能出现错误的代码写在这里
}
Catch
{
出错后的处理
}
17. 如果try中的代码没有出错,则程序正常运行try的内容后,不会执行catch中的内容
如果try的代码出错,程序跳到catch中内容
18. ++ 自加一,有前加后加
--自减-,有前减后减
列如:Int age=18;
Int sum=age++ - 10; 结果为8,age++取age原值参与运算,
Int age=18;
Int sum=++age - 10; 结果为9,++age为前加,所以在运算时取age加1运算,sum=9
结论,不管是++age还是age++,结果运算后,age值都进行了+1的运算
19.复合运算符 列如:
age=age+3; 》 age+=3;在age的原值上加上3
age=age-3; 》 age-=3;在age的原值上减3
age=age*3; 》 age*=3;在age的原值上乘以上3
age=age/3; 》 age/=3;在age的原值上除以3
age=age%3; 》 age%=3;在age的原值上加上取莫3
20. 关系运算符 > < == != >= <=
Bool 类型 值只有2个 真true 假flase
21. 逻辑运算符
1)&& || !
逻辑&& (与)
Bool 类型一般情况下都是关系表达式
整个逻辑与运算的结果也是bool类型
表达式1 |
表达式2 |
逻辑与结果 |
True |
True |
True |
True |
False |
False |
False |
True |
False |
False |
False |
False |
2)逻辑|| (或)
Bool 类型一般情况下都是关系表达式
整个逻辑与运算的结果也是bool类型
表达式1 |
表达式2 |
逻辑与结果 |
True |
True |
True |
True |
False |
True |
False |
True |
True |
False |
False |
False |
3)! 逻辑非
表达式为true ,结果为false,表达式为false,结果为true;
22.if结构
a) 基本语法 :if(条件)
b) {语句;语句2;};
23if-else
a) 基本语法 :if(条件)
b) {语句1;}
c) Else
d) {语句2}
24.switch—case语法:switch(表达式/变量)
{
Case 值1:语句块1;
Break;
}
25.If-else-if 与switch的比较
a) 相同点:都可以实现多分支结构
b) 不同点:
- witch:一般只能用于等值比较
- If-else-if:可以处理范围也可以用于等值比较
26.while语法
a) While(条件)
- {循环体}
1)程序执行过程
判断循环条件是否成立,执行循环体
如果条件不成立,则跳出循环
27.do while循环
a) 语法 do
{
循环体
- }
- While(循环条件);
28.For循环
a) 语法 for(表达式1;表达式2;表达式3)
b) {
- 循环体
c) }
29.break 语句;
a) 用于switch-case,用于跳出switch结构
b) 用于循环(while/do-while/for),用于跳出循环,当在循环中,执行到break,不管条件是否成立,跳出当前循环
30.Continue
a) 用于循环中,当程序执行到continue,立即跳出本次循环(continue后面的语句本次不在执行)
b) 直接跳到循环条件判断,如果条件成立,则进行下一次循环,条件不成了,立刻跳出循环
31.枚举
a) Enum 枚举类型
b) {
- 值1,
- 值2,
c) }
d) 枚举定义了一种新的数据(枚举)类型,定义枚举时列出这种所能拥有的所有值
e) 枚举一般定义在命名空间内,跟类是同一级别
f) 使用枚举的好处,限制了不同部门的程序员对变量的赋值,
g) 对用户智能提示
h) 把一个字符串转换成一个枚举类型
i) (枚举类型)(Enum.Parse(typeof(枚举类型),“待转换的字符串”));
32.常量
a) Const 类型 常量名=常量值
- 常量必须在定义的时候赋值
33.结构
a) 访问修饰符 struct 结构名
b) {
- 定义结构成员
c) }
d) 定义结构体一般跟类在同一个级别
e) 在结构内部定义小变量时,在前面加上public
f) 定义的结构类型也是一种类型
g) 通过结构的变量名加点,来访问结构内部的属性(小变量名)
34.数组:可以帮我们一次声明多个同一类型的变量(这些变量在内存是连续存放的)
a) 语法 数据类型[] 数组名称=new 数据类型[数组的长度];
b) 数组长度:就是要一次声明的变量的个数
c) 如何对元素进行读和写
d) 写:数组名[下标]=值
e) 读:数据类型 变量名=数组名[下标];
f) 声明数字类型的数组的时候,每个元素的初始值为0;
g) 第二种声明语法 数据类型[] 数组名称={直接赋值};
h) 对于一个数组,我们都可以通过 数组名.Length 来得到一个整数,这个整数就是数组的长度
i) .net给我们提供了一种对数组排序的方法:
j) Array.Sort(要排序的数组名); 对数组进行升序排序
k) Array.Reverse(要排序的数组名)//反转数组
35.冒泡排序
对一系列元素进行排序(由大到小排):冒泡排序法
10 20 30 40 50 60 70 80 90 对这9个数进行由大到小排序
20 30 40 50 60 70 80 90 10 第1趟比较 比较了8次
30 40 50 60 70 80 90 20 10 第2趟比较 比较了7次
40 50 60 70 80 90 30 20 10 第3趟比较 比较了6次
50 60 70 80 90 40 30 20 10 第4趟比较 比较了5次
60 70 80 90 50 40 30 20 10 第5趟比较 比较了4次
70 80 90 60 50 40 30 20 10 第6趟比较 比较了3次
80 90 70 60 50 40 30 20 10 第7趟比较 比较了2次
90 80 70 60 50 40 30 20 10 第8趟比较 比较了1次
9个数需要比较8趟
那么:n个数,需要比较n-1趟
第i趟要比较的次数为: n-i
如果要从大到小排序,那么在比较中,让前一个元素与后一个元素进小于号的比较,如果成立,则交换位置.
设当前元素为k 数组名arr
If(arr[k]<arr[k+1])
{
int temp=arr[k];
arr[k]=arr[k+1];
arr[k+1]=temp;
}
36.方法
a) 定义: [访问修饰符] [static] 返回值类型 方法名(参数列表){ 方法体}
b) []符号表示可选项
c) Static修饰的方法用类名.方法名();
37.局部变量:
a) 在方法中定义的变量成为局部变量,其作用域从定义开始到所在的大括号结束为止
b) 一旦变量定义到外面,这个变量就可以被这个类的所有方法使用
c) 通过参数调用
38.参数与返回值
a) 对于一个没有返回值(void)的方法,里面默认有一个return
b) 程序一旦遇到return立刻退出本程序
39.如果一个方法有返回值,注意2个地方
a) 返回值不能是void
b) 方法定义上一旦有返回值那么return就不能省去,必须在方法中显示的retur加上要返回的值
c) 那么在调用这个方法时,前面就要定义一个和返回值类型相同的变量;来接受返回值
d) 注意:通过返回值进行返值,只能返回一个值
40.一般是在同一个类中,方法名相同,参数的个数不同或参数的对应位置不同,构成方法重载
41.out ref
a) out:注重于传出,在调用者中。可以不赋初始值,就传给方法
b) 在方法(被调用者中)中,一定要先赋值,在使用
c) ref:既可以传入,又可以传出,在传参前,必须先赋初始值
42.C#产生随机数
a) Random r=new Random();
b) r.Next(最小值,最大值);大于等于最小值,小于最大值
43.属性---对象具有的各种特征
44.方法---行为,动作,执行的操作
45.类---类是模子,确定对象将拥有的特征(属性)和行为(方法)
46.类是对象的类型
47.类的定义
a) [访问修饰符] class 类名
b) {
- 成员;
c) }
48.类的实例化
a) 类名 实列名=new 类名();
49. 访问修饰符:在C#中有4个访问修饰符
public:可以在任何地方被访问
internal:只能在本项目中被访问
private:只能在本类中访问
preotected:只能在本类和子类中被访问
50. 在一个类中定义变量或方法时,没有写访问修饰符,那么默认的访问修饰符为private
在类这个级别,不写访问修饰符默认为internal
51. 定义一个变量。在这个变量中含有get/set两个方法,我们就叫做属性
允许外部访问的变量一定要声明为属性
52. 读写属性:具有get/set方法的属性叫做读写属性
只有get方法的属性称为只读属性,这个属性只能读取,不能赋值
只有set方法的属性称为只写属性,这个属性只能写,不能读取(只写属性用的很少)
53. 当我们实例化一个类时,系统会自动对这个类的属性初始化,
数字类型初始化成0/0.0
String类型初始化成null
Char类型初始化成\0
54. 使用构造方法的好处
1)对多个属性进行赋值时,不需要重复的写实例化
2)可以保证用户在new一个对象的时候必须对某一个属性进行赋值
3)和第二类相似,在创建对象时,对只读属性进行初始化
55. 当我们定义好一个类之后,如果没有写构造方法,系统会自动给我们加一个默认的无参数构造方法,什么也不做,我们也看不到
56. 构造方法是一个特殊的方法,他的名字和类的名字相同,并且没有返回值,连void也不用加,我们一旦手写一个构造方法,系统默认的为我们添加的无参的构造方法就不会为我们添加了
57. 要实例化一个类必须调用他的构造方法
58. 要像抛一个异常,可以这样写
throw new Exception(“错误信息”)
59. params 使用 params 关键字可以指定采用数目可变的参数的方法参数。
可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组。 还可以不发送参数。 如果未发送任何参数,则 params 列表的长度为零。
在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。
示, params只能在参数的最后面
60. 命名空间是解决类的冲突的,只能在一个命名空间里面调用类
如果想调用别的命名空间的类,有2个方法
一个是在眉头用using调用
或者直接通过命名空间点出类名
61. String类型可以看成char类型的只读数组
62. String
比较字符串方法
ToLower();//转换成小写
ToUpper();//转换成大写
Equals();//比较方法
一切对象都可以调用.ToString()方法
Split()分割字符串
Replace()替换字符串
Substring()截取字符串
Contains()过滤字符串
IndexOf()判断字符串的位置
63 数据类型可以分为值类型和引用类型
如果2个值类型进行相等赋值后,改变其中一个值类型的值,另一个不受影响,(不会改变)
如果2个引用类型进行相等赋值后,改变其中一个对象的值后,另一个也发生了改变
64. 值类型 int long float char bool enum struct
65. 引用类型 类 接口 数组
66. 字符串比较特殊,由于其不可改变性,虽然是引用类型,但2个字符串经过相等赋值后,改变其中一个值(不是改变他们同时指向的字符串,而是又产生了一个字符串赋给这个变量),另一个不会改变
67. 继承符号 : 语法 子类:父类
表示子类继承了父类,子类可以调用父类成员
在c#中,所有类都直接或间接的继承了object类
68. 集合类 ArrayList
1)一般情况下,对于集合:添加是Add 删除看有没有remove/removeAt
2)插入 insert 清除:Clear/removeAll
3)上面仅为一般规律
4)
HashTable 键值对
查询 hashTable[键或者值]
添加 hashTable.Add();
foreach遍历
foreach(数据类型 变量名 in 集合)
{
}
69. 泛型集合
List<数据类型>
Dictionary<键的数据类型,值的数据类型>
泛型集合跟普通集合的区别,泛型集合规定了数据类型,而普通集合不规定
70. 定义方法时,有static修饰的方法,叫做静态方法.没有static修饰的方法叫实例方 法.(这个方法必须经过实例化后,用实例名.方法名()调用)
调用方式不用:
静态方法: 类名.方法名(); 直接调用.
实例方法: 先实例化,再通过实例名+点+方法名去调用.
列:Random r = new Random(); r.Next(1,7);
71. 静态字段或实例字段(在类里,方法外定义的一个变量):调用和上面一样.
实例方法中的可以直接访问静态的和实例的方法和属性..
静态方法中不可以直接访问实例方法和属性,要想访问必须先实例化.
72. Winform知识:
窗体:
Text:左上角文字
BackColor背景颜色
BackGroundImage 背景图片
ControlsBox
Icon左上角的图标
MaximizeBox:最大化按钮是否显示
MinimizeBox:最小化按钮是否显示
StartPosition:起启时窗体默认显示的位置
TopMost:本窗体是否在最前面
FormBorderStyle:窗体外框的样式
事件:
Load事件:窗体显示之间触发的一个事件,一般用于对窗体上内容进行初始化
和鼠标相关的事件:
click单击 doubleclick双击
MouseMove:当鼠标移动到该控件上时触发.
控件常用的属性:以Button为例.
属性:
Cursor:改变鼠标的显示样式
Font:字体相关设置
ForeColor:前景颜色
Location:控件在窗口控件中的位置
Size:控件的大小
Enbale:控件是否可以显示
Visible 设置可见性
73. 窗体显示:
New一个实列
实列.show();
Show() 非模态窗体
showDialog()模态窗体
Hide:隐藏窗体,如果在想显示出来,直接调用show方法
Close()关闭窗体,如果在想显示出来,只能创建一个新的窗体,再调用show方法
Lable 控件:用于向用户显示信息
LinkLable控件:链接直接在chikl事件里面写”System.Diagnostics.Process.Start("http://www.baidu.com");“
TextBox: 用于接收用户输入的数据
ScrollBars:设置滚动条
WordWrap:在多行编辑时是否自动换行
事件
Eenter:获得焦点
Leave:失去焦点
PictureBox:用于向用户展示图片
Application.StartupPath 获得应用程序启动时的
ComboBox控件
属性:
Items
DropDownStyle:枚举有3个
1)simple:以列表显示可选值,用户可以选着也可以输入值
2)DropDown 以下拉列表显示可选值,用户可以选择也可以输入
3)DropDownList:以下拉列表显示可选值用户只能选择,不能输入
Timer控件
属性
Interval:触发时间的时间间隔,单位是ms 1000ms=1s
Enbaled
事件
Tick事件
74. GDI(GraphicsDrawingImage)
Graphics gra=this.CreateGraphics() 调用Graphics对象
在winform 里面可以通过PaintEventArgs 调用Graphics对象
Graphics gra=PaintEventArgs.Graphics();
75. HTML背景===body属性
text属性 指定文本文件的颜色
link属性
alink属性
vlink属性
bgcolor属性
background属性
当鼠标点击超链接时
鼠标点击前 link
鼠标点击时 alink
鼠标点击后 vlink
bgproperties=”fixed” 固定图片属性
列表
有序列表
<ol>
<li>第一项</li>
<li>第二项</li>
</ol>
无序列表
<ul>
<li>第一项</li>
<li>第二项</li>
</ul>
自定义列表
<dl>
<dt>项的标题</dt>
<dd>对这个项的解释</dd>
</dl>
表格
每一个看到的东西都是块
块儿里面还可以有块
一个大块里面有许多行块
在行块里面又有许多单元格
<table>
<tr>
<td>表格里数据</td>
<td>表格里数据</td>
</tr>
</table>
跨行 colspan
跨列 rowspan
表单:凡是让你输入内容,并且根据输入的内容作出反应的这些东西都是表单的一部分
语法 form
<form>
<!----------凡是要输入的内容都放在这里------->
</form>
Form的属性
Action=”目标地址|”
Method=”提交方法” get(直接通过地址栏传送数据) 、post(通过报文)
Form标签里面,每一个标签都应该有name属性和value属性
Input标签
文本框:
<input type=”text”/>
<input type=”text” name=”文本框名字” value=” ”/>
密码标签:
输入的内容不显示
<input type=”password”>
文本域标签
<textarea>文本内容 </textarea>
属性 row和col
提交提交按钮标签
<inpyt type=”submit” name=“sb ”,value=”按钮属性按钮显示的文字的属性”>
重设按钮标签
<input type=”reset”/>
清除表单中所有输入的数据,以供重新输入
按钮标签
<input type=”button”/>
放置一个按钮,用于触发自定义的事件
图像标签
<input type=”image”/>
复选框标签
<input type=”checkbox”/>
单选框标签
<input type=”radio”/>
文本选择标签
<input type=”file”/>
列表
<select>
<option></option>
</select>
属性
Size 1或者非1
当size属性不为1相当于winform里面的listbox
当size属性等于1时相当于winform里面的ComboBox
Mulitiple 表示是否可以多选mulitiple=”mulitiple”
Selected 默认选上了
分区标签
<div></div>
<span></span>