欢迎光临散文网 会员登陆 & 注册

【01_C#入门到精通】新手强烈推荐:C#开发课程,一整套课程

2021-10-10 11:33 作者:怀念旅行的信  | 我要投稿

.Net:1. .Net平台

2. .Net FrameWork框架(CLR:公共语言运行池;.Net类库)



C/S和B/S模式

启动方式:cmd——devenv


快速运行程序快捷键:Fn+F5

console.writeline();在控制台输出括号中的内容(以行为单位输出)。

console.write().直接输出,直到一行输完才开始下一行

console.readkey();等待键盘输入,退出程序。


C#中特有的数据类型(关键字)是小写,大写也可。例:string/String。

命名规则:1.变量名采用驼峰命名法;

2.类或方法每个单词首字母大写。


占位符格式:{数字}

使用方法:一对一;

保留小数位数:{0:00}——两位小数

console.ReadLIne();接收用户输入内容。

转义符:一个“\”加上一个特殊的字符,组成了一个具有特殊意义的字符


@符号:1.取消\在字符中的转义作用

2.将字符串按照原格式输出


小的转大的:隐式类型转换(自动类型转换)

大的转小的:显示类型转换(强制类型转换)

转化前提:两者类型兼容。

不兼容的数据类型转换:convert.

基本语法:int a=convert.toint32(b);


方法四:int.parse():是以上三个方法的实质 (double.parse/decimal.parse。。。)

int.Tryparse():转化失败会...



if分支结构

异常捕获:try-catch 语法:try{可能会出现异常的代码}catch{出现异常后执行的代码}


如果出现异常,执行catch中的内容,此时是b为false的时候执行,那么下面if中b为true的时候才会执行乘法操作;如果没有异常,执行try中内容,此时b为true,if语句内容也会执行。


switch-case:用于处理多条件定值的判断

语法:switch(变量或表达式的值)

{

case 值1:要执行的代码;

break;

case 值2:要执行的代码;

break;

...

default:要执行的代码;

break;

}

break:1.跳出swich-case结构

2.跳出当前循环

3.一般不单独使用,与if判断一起使用

While循环:语法结构while(循环条件){循环体;}


程序调试:


for循环:语法格式:

for(表达式1;表达式2;表达式3){循环体}

continue(s):立即结束本次循环,判断循环条件,如果成立,则进入下一次循环,否者退出循环。

三元表达式:语法:

表达式1?表达式2:表达式3:

产生随机数:Random r=new Random();

int number=r.Next(1,11);

常量:const 变量类型 变量名=值;

枚举: public enum 枚举名

{

值1;

值2;

值3;

.......

}

作用:规范开发,使代码标准统一化。

枚举类型与其他类型的转换:

结构:声明多个不同类型的变量

public struct 结构名

{

成员;//字段

}

代码规范:字段前加 _

数组:一次性储存多个相同类型的变量(没有赋值的话,数组中存的是0)

语法:数组类型【】 数组名=new 数组类型【数组长度】


冒泡排序

方法:public static 返回值类型 方法名 (参数列表)

{

方法体;

}

方法的调用:类名.方法名(参数);

静态字段模拟全局变量:

public static 类型 字段名

while(true):一直循环

out参数:

ref参数:好处:不用写返回值

params可变参数:

方法的重载:方法的名称相同,但是参数不同。

方法的递归:方法自己调用自己。


面向对象(封装,继承,多态)

我们在代码中描述一个对象,通常描述这个对象的属性和方法。

对象是根据类创建出来的。(类是对象的描述,对象是类的实例)

类:(不占内存,对象占内存)

public class 类名

{

字段;

属性;

方法;

}

方法加上static:如果方法和Main()函数不在同一个类中,需要类名.方法名才能调用;

方法不加static:可以对象.方法名调用

this:代表当前类的对象

属性:保护字段,对字段的赋值和取值进行限定。

属性的本质就是get()和set()方法.

先执行set(),再执行get().

静态与非静态的区别:


静态类使用时是通过类名.出来的,所有不能创建对象;非静态类需要创建对象,使用时通过对象.出来。

何时使用静态类

(1)如果你想要你的类当作一个工具去使用,这时可以考虑将类写成静态类。(经常需要用到的类)

(2)静态类在整个项目中资源共享。

构造函数:名字与类名一样

作用:初始化对象(给对象的每个属性依次赋值)。

类本身有一个默认的无参的构造函数。

关键字New:

)4、隐藏从父类那里继承过来的同名成员。

关键字this:

在一个构造函数中,要重复另一个构造函数中的参数,可以通过在这个构造函数的结尾用:this(需要的参数)

析构函数:帮助程序释放资源,或者不用析构函数,程序会调用垃圾回收器释放资源。

命名空间:

在一个项目中引用另一个项目——使用”依赖项”添加引用

值类型:int,double,bool,decimal,struct,enum

值类型的值存储在内存的栈中

引用类型:string,自定义类,数组

引用类型的值存储在内存的堆中

字符串的不可变性:

再给一个已经赋值的字符串重新赋值时,老值并不会被覆盖,而是重新开辟一个存储空间来存储新值(此时栈中的地址会指向新值的地址)

当程序结束后,GC(垃圾回收器)扫描整个内存,如果发现有新的空间没有被指向,则立即把它销毁。

字符串类型详解:



继承:在一些类中,将重复的成员单独封装到一个类中,作为这些类的父类

语法 子类:父类

子类继承父类的属性和方法,但子类并没有继承父类的私有字段;子类并没有继承父类的构造函数,但子类会默认调用父类无参数的构造函数,创建父类对象,让子类可以使用父类的成员。

所以,如果在父类中重写一个有参数的构造函数后,那个无参数的就被干掉了,子类就调用不到,所以子类会报错。

解决方法:

(1)在父类中重新写一个无参数的构造函数

(2)在子类中显示的调用父类的构造函数,使用关键字:base(需要传给父类的东西).

里氏转换:

(1)子类可以赋值给父类:如果有一个地方需要一个父类作为参数,我们可以给一个子类代替。

(2)如果父类装的是子类对象,那么可以将这个父类强转为子类对象。、

is:表示类型转换,转换成功返回一个true,否则false。

as:表示类型转换,转换成功则返回对应的对象,否则返回一个null


protected:受保护的

可以在当前类的内部以及该类的子类中访问。

ArrayList:集合

长度可以任意改变,类型随便。

ArrayList list=new ArrayList();

ArrayList长度问题:

每次集合中实际包含的元素个数(count)超过了可以包含的元素个数(capcity)时,集合就会向内存中申请多开辟一倍的空间,来保证集合的长度一直够用。

Hashtable:键值对集合(根据键去找值)。

键值对集合中,键必须是唯一的,值是可以重复的。

Hashtable tb=new Hashtable();

键值对对象【键】=值;

var:根据值能够推断出类型(声明的同时必须赋初值)


List泛型集合:

List<int> list=new List<int>();

装箱、拆箱:

装箱:将值类型转换为引用类型。

拆箱:将引用类型转换为值类型。

Dictionary:字典集合

Dictionary<int,string> dic=new Dictionary<int,string>();

FileStream:文件流(操作字节)

StreamReader、StreamWriter操作字符

文件的读取方式:(FileAccess)—针对文件中数据的操作

包括三个枚举:

FileAccess.Read(对文件读访问)

FileAccess.Write(对文件进行写操作)

FileAccess.ReadWrite(对文件读或写操作)

文件打开模式:(FileMode)

文件流中字符,字节,字符串之间转换:

利用语句:Encoding.(转化的字符格式).(Get数据类型)


多态:让一个对象能够表现出多种状态(类型)

实现多态的方法:

1.虚方法:将父类的方法标记为虚方法,使用关键字virtual。(这个函数可以被子类重新写一遍,子类添加关键字override)

2.抽象类(不允许创建对象):当父类中的方法不知道如何去实现的时候,可以考虑将父类写成抽象类,将方法写成抽象方法。(父类和方法都加关键字abstract,然后让继承他的类也就是子类进行重写)

3.接口(实现多继承时就用接口)

public interfce I...able(接口名)

(1)接口中的成员不允许添加访问修饰符,默认就是public。

(2)不允许写具有方法体的函数

(3)接口中只能有方法(属性的本质也是方法)

(4)接口中的成员的不能有任何实现。

(5)接口与接口之间可以多继承

显示实现接口:(解决方法重名问题)

自动属性:

访问修饰符:

值类型在复制的时候,传递的是这个值的本身

引用类型在复制的时候,传递的是这个对象的引用

序列化:将对象转化为二进制。

反序列化:将二进制转化为对象。

作用:传输数据

部分类:解决两个类同名问题

密封类:不能被继承



【01_C#入门到精通】新手强烈推荐:C#开发课程,一整套课程的评论 (共 条)

分享到微博请遵守国家法律