C#期末复习知识点

部分知识点,掌握了的就没有写了

C#基础语法部分:

1、 console.read()获取的是int型,但返回的是ASCII码;Console.ReadLine()获取的是string型。不能隐式转换就强制转换(加括号类型),否则就用各种转换函数。
2、 数据类型转换:
Convert可以转换大部分的数据类型,比如:
Int integer = Convert.ToInt32(str) ; String转int
Convert.ToInt16() ; 转short
Convert.ToInt64() ; 转long
Convert.ToChar() ; 转char
Convert.ToString() ; 转string
Convert.ToDateTime() ; 转日期
Convert.ToDouble() ; 转double
Convert.ToSingle() ; 转float
3、 保留几位小数:
.ToString(“.00”) ;四舍五入
4、 类成员的默认访问修饰符是private
5、 Protected是类内访问和从该类继承的子类可以访问
6、 Partial是可以将类的定义放到不同文件,编译器会自动合并
7、 类的默认访问修饰符是internal,在程序集内都可以访问(好像是一个程序内)
8、 类中的属性get和set都得有,哪个不想要就前面加private
9、 实现限定字段的范围(比如年龄大于0):先定义字段age,再定义属性Age,get返回age,set限制value。
10、 一般的传参传的都是值类型,如果传参的前面加ref就是传地址。引用参数的话,可以不用返回东西,函数体里面的赋值会直接改原地址。
11、 输出类型(C#的一种参数类型,具体跟引用类型差不多,也不是必须就得输出)的参数在主函数调用时实参前得加out,形参前也得加out。用处在于,如果一次性返回多个值时,返回一个数组可以,但每个值类型不同就只能用输出类型的参数了(其实object型的数组也可以)。比如一个方法是写学生信息,可以传进去string类型的学号和int类型的年龄。
12、 Object类型的数组可以包含多个类型的值。C#中传参可以传一大堆参数,然后形参那里只用写一个object类型的数组就行,但是需要形参前加个params来实现不定长参数数量的传递。
13、 在静态方法中引用其他东西的时候,其他的也得是静态的,不然就得类名.了
14、 类是引用类型,struct是值类型,同时不支持继承(好像是隐式继承了object)和无参构造函数。Struct数据保存在堆栈中,类的数据保存在堆(heap)中
15、 析构函数是在调用完后执行,函数名前加~,没有参数没有修饰符
16、 构造函数是创建对象时自动调用,无返回类型(也不用写void),且名字和类相同(就是new后面的那个函数)
17、 私有构造函数主要是用于防止被实例化(因为不能new了);不指定构造函数的修饰符,默认是private
18、 构造函数可以重载,但不能被继承
19、 只读字段用于声明整个程序运行过程中只能初始化一次的字段
20、 抽象类只能用作基类,不能被实例化
21、 多态是指同名方法作用于不同类的实例,且有不同的效果。通过继承、抽象类和接口都可以实现。继承实现的两种方式是virtual/override和new。前者是基类为virtual扩充类为override且两者名称、返回类型、参数个数类型都一样。后者只要在扩充类写new就可以隐藏基类的方法。
22、 在override中想调用基类的方法,可以用base.方法()
23、 Random类表示带小数的可以用一个next加上一个nextdouble,前者小闭大开,后者0-1之间。
24、 接口只能声明不能实现,且不能被实例化。
25、 类只能继承一个类,但可以继承多个接口
26、 Var只能出现在局部变量中,且不能为null;字段不能用var来声明
27、 泛型可以避免频繁的类型转换(实例化时才指定类型)、拆箱装箱
28、 List list = new List(){1,2,3,4}
List list = new List(10)
29、 Linq查询from可以有多个,where想实现多条件可以用&&;select前可以用orderby排序(ascending升descending降);group by可以分组,与select二选一;select new{}可以查询多个对象
30、 枚举enum类型,不能写在方法主体中,可以先不声明成员,也可以先不对成员赋值,也可以只赋值一部分。如果不赋值的话,默认赋值0123…往后排;如果有赋值的话,后面紧跟的没赋值的就默认前一位+1。
31、 枚举enum类型在名称之后加 :数据类型 可以改变成员数据类型,同时也限制了赋值的范围。
32、 .TryParse(str,out n)方法返回bool型,将str转换为 . 前面的数据类型,成功了返回true,且n值变为转换后的(需要先定义n);转换失败返回false。
33、 字符串常用方法:
str.Length
str.IndexOf() 返回int型;()里是字符串,如果找不到就返回-1
str.Substring(1) 一个新的字符串,从原字符串第1位(0最前)开始到最后
str.Substring(2,3) 一个新的字符串,从原字符串第2位开始连续3个字符
str.Insert(2,”xy”)
str.Remove(1)
str.Remove(1,2)
34、 数组最大值arr.Max(),arr.Min(),arr.Average(),竟然是用Linq程序集;其中average()可以表示小数的
35、 String.Join(“”,arr)函数可以把数组用””里的字符串连接起来
36、 装箱(boxing)操作是将值类型隐式地转换为Object类型。拆箱(unboxing)是显式地把Object类型转为值类型
37、 Finally块是不管怎样都会执行的,哪怕try里面 return或者跳转了也不行
38、 DispatcherTimer用法:start开始stop结束interval时间间隔Tick触发
39、 目录
在这里插入图片描述
文件:
大部分用法与目录类似。
复制文件函数File.Copy(path1,path2,true);true表示如果目标文件存在,则覆盖。
读写文件:
File.AppendAllText(path,content) 打开文件后追加到最后一行,如果没有该文件,则创建。
File.WriteAllText(path,content) 创建文件并写入,如果文件存在,则覆盖
File.ReadAllText(path,encoding.default)
allLines跟text差不多,只不过是以字符串数组的形式,每个字符串都是一行内容

再po出一道老师上课讲的面向对象的题:
在这里插入图片描述
输出结果为:A\nB\nA.Fun()
首先输出A和B应该没啥疑问,只是调用子类构造函数前会调用父类的构造函数。那么为什么是A.Fun呢?
这里我们就要先知道,a这个对象,到底是哪个类的。
父类 a = new 子类() 这种叫做父类引用子类对象。意思是a声明为父类,但实际上是个子类的对象,可以理解为向上转型。这时候我们再看代码,注意父类方法中virtual和子类方法中new,这两个关键字其实不是一起用的,我们知道虚方法是跟重写(override)一起的,没有override,那virtual其实也没啥意义了。至于new,他跟override的区别是他只能隐藏父类方法,但父类方法还是在那里(override后就没有父类那个方法了)。对于隐藏方法,声明为父类就调用父类方法,声明为子类就调用子类方法,所以这里调用的是父类中的Fun()而不是子类的。
这时我们如果把子类中那个new改成override,那输出的就是B.Fun()了。因为当父类中的方法只在父类中定义而子类中没有重写,才可以被父类引用调用;如果子类中重写了该方法,那就调用子类的。这叫做动态连接。

WPF语法部分:

1、模态(模式)对话框(窗口),是子窗口不关闭,旧窗口就无法移动。
2、如果实例化一个窗口对象,然后用button或者其他方式打开后再关闭,就无法再次打开。原因是关闭时,子窗口被销毁了。如果想再次打开,可以将子窗口的关闭事件改为隐藏,即在window_closing这个事件中加入如下代码
在这里插入图片描述

这样就可以多次打开,但是有两个地方会发生变化。一个是加载一个结束了或者没加载过的界面,显示的过程会有一点区别(就是第一次打开一个窗口,和你隐藏他再次打开的UI过渡不太一样),这个不是啥大事;第二个是关闭主窗口后,由于子窗口的进程没有结束,整个程序不会结束调试。这样的话就需要在主窗口的closing事件添加代码实现手动结束。
在这里插入图片描述

3、 非模态窗口(用show的那个)可以用hide方法隐藏窗口。
4、 窗口关闭时会触发closing和closed两个事件,前者是关闭前,后者是关闭时。比如word文档关闭时,如果没有保存,就会触发closing事件,提示你要不要保存。
5、 更换启动页,在APP.xaml里更改StartupUri
6、 Padding是控件和里面的内容之间的距离,margin是控件和其他控件之间的距离,均为左上右下
7、 Stackpanel常用属性orientation,vertical是竖着的,horizontal是横着排。
8、 Groupbox的header和content可以是任何类型
9、 Textblock只显示不输入,textbox一般用来输入
10、 passwordChar属性可以改passwordbox的掩码字符
11、 radiobutton是单选,每一组的radiobutton只能选一个;CheckBox是复选框
12、 设置控件颜色(纯色画笔):
在这里插入图片描述

13、 事件注册+=,事件取消-=。事件处理程序一般都是两个参数sender和e,一般用e.source判断谁是事件源
14、 事件路由分三种方式:
直接(Direct):该事件只针对元素本身,不会路由到其他元素
冒泡(Bubble):从事件源以此向父元素方向查找,直到找到根元素。目的是搜索父元素中是否包含针对该元素的附件事件声明。
隧道(Tunnel)。从根元素向子元素路由,直到查到事件源
15、 鼠标按下触发MouseDown事件,抬起触发Click和MouseUp事件
16、 键盘是KeyDown和KeyUp
17、 RowDefinitions和ColumnDefinitions定义完几行几列后,Grid.Row和Grid.Column来设置控件所在位置。Width()中可以用”*”来定义比例长度。Grid.ColumnSpan/RowSpan可以设置跨多少个格子

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值