C#自学基础

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) 不同点:

  1. witch:一般只能用于等值比较
  2. If-else-if:可以处理范围也可以用于等值比较

26.while语法

a) While(条件)

  1. {循环体}

1)程序执行过程

判断循环条件是否成立,执行循环体

如果条件不成立,则跳出循环

27.do while循环

a) 语法 do

{

循环体

  1. }
  2. While(循环条件);

28.For循环

a) 语法 for(表达式1;表达式2;表达式3)

b) {

  1. 循环体

c) }

29.break 语句;

a) 用于switch-case,用于跳出switch结构

b) 用于循环(while/do-while/for),用于跳出循环,当在循环中,执行到break,不管条件是否成立,跳出当前循环

30.Continue

a) 用于循环中,当程序执行到continue,立即跳出本次循环(continue后面的语句本次不在执行)

b) 直接跳到循环条件判断,如果条件成立,则进行下一次循环,条件不成了,立刻跳出循环

31.枚举

a) Enum 枚举类型

b) {

  1. 值1,
  2. 值2,

c) }

d) 枚举定义了一种新的数据(枚举)类型,定义枚举时列出这种所能拥有的所有值

e) 枚举一般定义在命名空间内,跟类是同一级别

f) 使用枚举的好处,限制了不同部门的程序员对变量的赋值,

g) 对用户智能提示

h) 把一个字符串转换成一个枚举类型

i) (枚举类型)(Enum.Parse(typeof(枚举类型),“待转换的字符串”));

32.常量

a) Const 类型 常量名=常量值

  1. 常量必须在定义的时候赋值

33.结构

a) 访问修饰符 struct 结构名

b) {

  1. 定义结构成员

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) {

  1. 成员;

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>

时间: 2024-09-30 07:37:43

C#自学基础的相关文章

java自学基础、项目实战网站推荐

推荐一个自学的好平台,有Java前端,后端,基础的内容都有讲解,还有框架的讲解和实战项目,特别适合自学 JAVA 自学网站 JAVA 练习题 Mybatis 教程 Spring MVC 教程 模仿天猫官网后端JEE 模范天猫官网SSH 模范天猫官网SSM 模仿天猫官网SpringBoot 模仿天猫官网前端 JAVA 桌面软件练手项目,一本糊涂账 原文地址:https://www.cnblogs.com/minghaiJ/p/11335322.html

HTML自学基础

关于自学HTML中遇到的各类细节问题 1.<a>表示链接标签,类似的有<img src>.链接的地址在<base>中填写.<base href="http://......."/> 2.<base>标签只能在头部中定义,并且只能出现一个. 3.<link>只能在头部中定义,但是可以出现多次.其中的href属性来指向所连接文档的url.他的值可以使任何有效的文档的url. 4.向前链接和反转链接rel/rev,二者可

Java自学基础

1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致.2.Java有没有goto? java中的保留字,现在没有在java中使用.跳出循环用的3.说说&和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为f

OC语言自学基础知识总结

一.成员变量的作用域 二.点语法 三.构造方法 四.分类 五.类的本质 六.自动生成getter和setter方法 七.description方法 八.id类型 九.SEL 一.成员变量的作用域 @public 在任何地方都能直接访问对象的成员变量 @private 只能在当前类的对象方法中访问 @protected(可以不写,默认) 能在当前类和子类的对象方法中直接访问 @package 只要处在同一个框架中,就能直接访问对象的成员变量 @interface和@implementation中不

liunx自学基础知识笔记 文件属性及群组

如何改变文件属性与权限先查看一下文件属性 ls -l先讲一下各个列代表什么意思 1.-rw-r--r-- 权限2.1 连接3.root 拥有者4.root 群组5.55986 文档大小6.1月 5 19:50 修改日期7.install.log 档案名 第一栏代表文档类型和权限第一次学解释下其中-rwxrwx---drwxrwx--- 第一个字符代表这个文件是目录.文档或链接文件等等: d代表目录-代表是文档l代表是链接文档b代表是文件里的可供存储的接口设备c代表是文件里的串行端口设备.键盘.鼠

从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间.本文将会讲到我在这半年里做对了哪些事情. 前言 研究生时期的方向选择 对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向. 我就读于华中科技大学,主修软件工程专业,我在刚读研的时候最头疼的也是这两件事情.首先说明一下,我读的是专硕,所以实验室一般不搞科研,有部分导师会带项目,由于我不打算在

《Hibernate逍遥游记》读书笔记(1)

一.看这本书的原因 在图书馆看到这本书时,当时只是被它的名字吸引. 已经从开始系统学习编程将近两年,从自学基础到跟着学长做项目,到后来学长毕业后,和伙伴一起做项目.然而,对于老大框架里的IoC.Nhibernate等等等等,从来都是只知其名不明它意. 所以当我看到这本书时,真感觉它是我学习Nhibernate的明灯,虽然这本书讲的是Java的Hibernate,但是对于我们程序猿来说,这并没多大区别.当我翻看它的前言,当时就发现它是最适合现在的我的,引用书里的介绍 “本书的特色在于化繁为简,以通

工作坊

新一代架構師的技術傳授工作坊(Workshop) 簡介    本中阶课程是<新一代架构师>培育知识(和技术)体系的树干部分,内涵包括: Part-1:协助梳理自学(初阶)期间的知识和技术体系.基于初阶课程(学员必须先自学)基础,与高老师面对面,手牵手,一起应用于实际案例中,以便扫除自学期间的知识盲点和技术误区:以建立树根(初阶)部分的扎实基础,确保知识和技能的健康成长. Part-2:为高阶课程的学习建立基础.高阶课程是高老师从欧美.日本引进的前沿技术,也是国内首先将设计思考(DesignTh

python 从认识到学习的第一课

2018-08-22 11:47:47 -python这门语言火了一段时间,诸如我这样的对python不甚了解的也常常听到关于"人生苦短,我用python"的豪言.这个暑假,2018年8月10号开始,我开启了python全栈开发的学习之路.第一,记录自己每阶段的学习状态:第二,分享自己的学习过程.我要使得自己每天都进步,在看文章的同时,也留下属于自己的文墨,记录属于自己的心情. -我的学习过程三部曲   -基础课程   -培训课程   -项目实践 为什么这样安排?我想每一个编程小白的学