- 博客(24)
- 收藏
- 关注
原创 C# 多态_抽象类和抽象方法
父类的行为不太需要被实现的,只希望子类定义具体的规则的 可以选择抽象类然后使用其中的抽象方法来定义规则。也可以重写抽象方法 ,对于虚方法也是可以重写(虚方法和抽象方法都可以被子类无限的重写)作用 不希望被实例化的对象,相对比较抽象的类可以使用抽象类。抽象类中 任何普通类中的东西都可以有。虚方法可以选择是否写逻辑但是抽象方法没有方法体。子类的子类中可以不重写第一个子类重写的抽象方法。子类中虚方法不重写也可以但是抽象方法必须重写。3.继承抽象类必须重写其抽象方法。整体框架设计时 会使用。2.可以包含抽象方法。
2024-08-13 21:33:49
61
原创 C#_多态
用父类装子类的对象 点出来就是子类(重写)的方法 具体的如果想在重写的方法里调用父类方法可以base.出来即可调用。让继承同一父类的子类们 在执行相同方法时有不同的表现(状态)也完全可以不保留父类的方法逻辑。重写之后在外部调用时。
2024-08-13 17:48:24
176
原创 C# 继承_密封类 sealed
遍历Human数组时只用接受一个Human类型的形参 就可以根据这个形参判断出是Driver还是Passenger。Human数组可以存储 Driver和Passenger。在程序设计中 密封类的主要作用是不允许最底层子类被继承。可以保证程序的规范性,安全性。作用 让类无法再被继承。
2024-08-13 17:16:42
118
原创 C# 万物之父 装箱拆箱
object 是所有类型的基类,他是一个类(引用类型)作用1.可以利用里氏替换原则,用object 容器装所有对象2.可以用来表示不确定类型,作为函数参数类型。
2024-08-13 15:31:10
50
原创 C# 继承_构造函数
子类实例化时 默认自动调用的 是父类的无参构造 所以如果父类无参构造被顶掉 会报错。父类的父类的构造 -> ... 父类构造 ->... ->子类构造。:base 和:this的区别。父类没有无参构造,可以用。当声明一个子类对象时。先执行父类的构造函数。再执行子类的构造函数。先调用指定父类的构造。
2024-08-13 14:47:47
92
原创 C# 继承_里氏替换原则
成功返回执行类型对象,失败返回null。is 判断一个对象是否为指定类对象。as 将一个对象转化为制定类对象。方便进行对象存储和管理。
2024-08-12 09:44:18
85
原创 C# 运算符重载
public static 返回类型 operator 运算符(参数列表) //参数多少由运算符决定。作用让自定义类和结构体对象可以进行运算。返回值写在operator前。关键字 operator。一定是一个公共的静态方法。逻辑处理 是自定义的。一个符号可以多个重载。不能用ref out。
2024-08-11 21:45:41
131
原创 C# 拓展方法
为别人封装的类型写额外的方法。概念 :为现有非静态 变量类型 添加 方法。提升程序拓展性 不需要再在对象中重写方法。第一个参数用this 修饰。不需要继承来添加方法。第一个参数为拓展目标。
2024-08-11 17:33:32
122
原创 C#索引器
访问修饰符 返回值 this [ 参数类型 参数名, 参数类型 参数名... ]比较适用于 在类中有数组变量时使用 可以方便的访问和进行逻辑处理。让对象可以通过索引访问其中的元素 像数组一样。结构体中也可以有索引器。
2024-08-11 17:03:51
163
原创 C# 静态类和静态构造函数
Console.WriteLine("矩形周长{0}" ,Tool.RectangularPerimeter(5,4));Console.WriteLine("矩形面积{0}",Tool.RectangularArea(5,4));Console.WriteLine("圆面积{0}", Tool.CircularArea(1));在普通类和静态类中 当访问其类中的某个成员时 会自动调用一次静态构造函数。静态构造函数的主要作用就是给静态类中的静态成员初始化。静态构造函数可以在静态类中 也可以在非静态类中。
2024-08-11 15:51:12
294
原创 C# 静态成员
const必须初始化不能被修改,static没有这个要求。const是只能修饰变量,static可以修饰很多。访问修饰符要写在const前面,static随意。const和static的区别。都可以通过类名点出来使用。
2024-08-11 15:05:39
202
原创 C# 属性
set {里面写value value就是传值的中间站。2.为成员属性的获取和赋值添加逻辑处理(加密处理 或者 限制变量值的范围)6.没什么需要特殊处理的可以直接给他 自动属性 就不用声明成员变量了。在构造函数中初始化会直接赋值给成员变量 属性中的逻辑都不会被运行。3.可以给成员变量设置只读或者只修改(一般不会设只修改)不能让get和set 的访问权限都低于属性的权限。属性中的代码只有调用属性赋值,获取数据时才运行。默认不加时 会使用属性申明的访问权限。加的访问修饰符要低于属性的访问权限。
2024-08-09 16:58:46
205
原创 C# 构造函数 析构函数 垃圾回收
1.标记对象从根(静态字段、方法参数)开始检查引用对象,标记后为可达对象,未标记为不可达对象 不可达对象就认为是垃圾。值类型是在栈(stack)中分配内存的,他们有自己的生命周期,不用对他们进行管理,会自动分配和释放。2.搬汪对象压缩堆 (挂起执行托管代码线程) 释放末标记的对象 搬迁可达对象 修改引用地址。引用类型都是存在堆(Heap)中的,所以它的分配和释放都通过垃圾回收机制来管理。大对象总被认为是第二代内存 目的是减少性能损耗,提高性能(默认存在2代内存里)标记清除(Mark Sweep)
2024-08-08 23:20:20
305
原创 C# 类和成员变量 成员方法
这样实例化Person类时 就会实例化一个新的Person 实例化这个新Person之后又会实例化出来一个新Person。数字默认都是0 ,bool默认 false char “”当 new 了一个Person对象 Person类中的值都会有一个初始值。可以在类中 声明该类的对象 但是不能实例化该类的对象。如果成员变量在类中初始化了就是初始化的值。在没有初始化的情况下。
2024-08-08 20:29:16
194
原创 C# 结构体1
/ 结构体关键字 struct。//this 代表自己 代表结构体中的变量。//函数中可以直接使用结构体内部申明的变量。// 变量类型 可以写任何类型 但是不能是自己的结构体 (Student s;// 构造函数的使用。// 结构体的构造函数 简化声明结构体变量后给结构体变量中的变量赋值(初始化的过程)// 结构体里面的方法都可以重载的 (* - V - *)// 结构体申明的变量 不能直接初始化。// 1.没有返回值。
2024-08-05 18:57:03
363
原创 C# 变长参数关键字params 和默认参数值
Console.WriteLine("我在{0},{1}点,玩{2},还{3},再{4}", where, time, things[0], things[1], things[2]);HaveFan("加利福利亚", 2, "沙滩足球","在海里游泳","欣赏美丽风景(* ^ v ^*)");// 一个函数可以有多个形参和一个params修饰的数组 并且params修饰的数组必须在参数的最右边。// 给方法传入n个各种类型的参数,n可以为0。// params 变长参数关键字。
2024-08-05 14:58:29
232
原创 c# ref 和out
out 修饰的 传入参数的时候 参数可以没有被初始化 在接受参数的方法内部 必须要给参数来赋个值初始化一下。ref 修饰的 传入参数的时候 要求参数必须初始化过 在接受参数的方法内部 可以不再给该参数赋值。使值类型和引用类型 在函数内部改值或重新声明 能够影响外部传入的变量。使用方法 在传入和接受参数 的前面加上 ref 或者 out 关键字。ref 和out的区别。
2024-08-03 20:11:58
62
原创 c#枚举练习
Console.WriteLine("你选择了{0} ,攻击力{1} ,防御力{2} ,职业技能 {3}。catch (Exception e) { Console.WriteLine("请输入数字");Console.WriteLine("请选择英雄职业:战士0 猎人1 法师2");Console.WriteLine("请选择英雄性别:男性0 女性1");skill = "奥术攻击";skill = "冲锋";skill = "假死";namespace 枚举。
2024-08-03 16:59:48
316
原创 C# 枚举
变量名1, //没有赋值第一个默认为0 后面依次增加 第二个1 第三2 第四3。//这里打印出来 是playertype中的变量名 main。变量名2, //给变量2 赋值 =10。//先用Enum类中的Parse方法转成通用类型 再 强制转换成E_playerType类型。E_枚举名字 变量名 = E_枚举名字.变量名1;if(变量名==E_枚举名字.变量名2)
2024-08-03 16:11:02
678
原创 c#学习笔记
String str = string.Format("我{0}是{1}的,我要{2}!", "C", "无敌", "好好学习天天向上");(在4和true后面自动的有一个tostring方法)// 我C是无敌的,我要好好学习天天向上!
2024-08-03 14:03:36
285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人