![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#基础
文章平均质量分 92
小听歌
这个作者很懒,什么都没留下…
展开
-
【Unity面试】 C#语言基础核心 | 面试真题 | 全面总结 | 建议收藏
Unity 游戏开发 C#语言基础核心面试真题原创 2022-08-28 19:47:01 · 1345 阅读 · 0 评论 -
[C# 基础] 委托 和 事件
1、委托上-如何自定义委托理解委托在现实世界的字面意思委托是引用类型,是一种类,全称委托类型typeof(delegate).IsClass 判定委托创建的实例可以存储1个或N个方法,这个委托实例可以间接调用Invoke方法类型兼容委托的声明(与函数指针的声明类似),在创建实例,Target目标方法target = new MyDelegate( target 目标方法)myDelegate = target ;直接赋值调用直接invoke间接调用myDeleget(target方法)原创 2021-01-10 13:59:21 · 379 阅读 · 0 评论 -
[C#基础] 11 静态类、静态方法和非静态方法区别
静态类类前有static修饰符静态类无法被实例化,且该类中的变量和方法都无法实例化静态类中的方法、变量、属性都是静态的静态类的本质是一个抽象的密封类abstract sealed class ,无法被继承无法实例化不包含实例构造函数如果一个类中所有成员都要被共享,可以定义成静态类静态方法与非静态方法的比较方法前有static修饰符的是静态方法,否则就是非静态方法差异比较第一:C#静态成员:(1)静态成员属于类所有,非静态成员属于类的实例所有。(2)每创建一个类的实例,都会在内存中为非原创 2020-06-17 23:27:32 · 493 阅读 · 0 评论 -
[C#基础] 10 反射的实现原理
反射定义动态获取类型信息,动态创建对象,动态访问成员的过程。作用在编译时无法了解类型,在运行时获取类型信息,创建对象,访问成员。流程1.得到数据类型2.动态创建对象3查看类型信息(了解本身信息,成员信息)常用类1.取得数据类型Type方式一:Type.GetType(“类型全名”);适合于类型的名称已知方式二:obj.GetType();适合于类型名未知,类型未知,存在已有对象方式三:typeof(类型)适合于已知类型方式四:Assembly.Load(“XXX”).GetT原创 2020-06-12 22:23:40 · 1245 阅读 · 0 评论 -
[C#基础] 09 简述关键字Sealed用在类声明和函数声明时的作用
sealed关键字修饰类当一个类有sealed关键字修饰,其它类无法继承这个sealed类示例:sealed类B可以继承A,但是C不可以继承Bclass A { }sealed class B : A { }//class C : B { } //错误:C无法从B派生sealed关键字修饰方法或属性当一个类中的一个方法或属性用sealed修饰,则这个类的派生类无法重写此虚方法或虚属性。必须是重写才能密封,所以和override一起使用 class A { p原创 2020-06-12 16:28:25 · 846 阅读 · 0 评论 -
[C#基础] 08 描述Interface和抽象类的不同
接口 Interface接口不能实例化接口的成员包括方法、属性、索引器、事件,方法只有声明接口中不能包含常量、字段、构造函数、静态成员。接口中的所有成员默认为public,因此接口中不能有private修饰符派生类必须实现接口所有成员一个类可以实现继承多个接口接口也可以继承多个接口,实现父接口所有成员接口是完全抽象,多继承抽象类 abstract class抽象类中的抽象方法,只做声明,有方法体,单不包含实现抽象类不一定有抽象方法或抽象属性,但声明了抽象方法,这个类就必须是抽象类原创 2020-06-12 15:47:38 · 587 阅读 · 0 评论 -
[C#基础] 07 简述String、StringBuilder和String暂存池
项目区别string执行速度较慢stringBuilder非线程安全,执行速度快stringBuffer线程安全,执行速度中三者使用总结:在操作少量变动的数据时,使用String,或者经量少用,避免内存泄露;在单线程中操作大量数据的字符串时,使用StringBuilder;在多线程中操作大量数据的字符串时,使用StringBuffer。...原创 2020-06-12 13:35:02 · 262 阅读 · 0 评论 -
[C#基础] 06 简述GC产生的原因,应该如何避免?
GC:垃圾回收机制,为了避免内存溢出GC会定期执行垃圾回收,回收分配给没有 有效引用 的对象的内存如何避免减少new产生对象的次数使用公用的对象,即静态成员Static,但要谨慎使用将String换成StringBuilder拼接字符串,string容易导致内存泄露使用对象池GamObject Pool...原创 2020-06-12 13:26:22 · 4638 阅读 · 0 评论 -
[C#基础] 05 简述数组、ArrayList和List的区别
项目区别数组高效,但数据固定长度无法改变ArrayList动态数组,存储Object类型,有装箱拆箱(消耗性能),不带泛型,数据类型丢失,继承了IListList< T >动态数组,带泛型,指定存储数据类型,类型安全,继承自IList动态数组:通过添加或删除改变数组长度。装箱 是将值类型转换为引用类型Object 。拆箱 是将引用类型Object转换为值类型。...原创 2020-06-12 11:26:19 · 202 阅读 · 0 评论 -
[C#基础] 04 访问修饰符private、public、protected、internal的区别
访问修饰符区别(访问范围)public对任何类,任何成员都公开,无限制访问private只对所属类公开protected只对所属类以及派生类访问公开internal只对所属程序集的类访问protected+internal只对所属程序集和所属派生类访问...原创 2020-06-11 23:17:08 · 200 阅读 · 0 评论 -
[C#基础] 03值类型和引用类型的区别
值类型和引用类型关系图值类型和引用类型的区别值类型存储在内存栈中,引用类型存储在内存堆中,内存堆存放的是地址值类型存取快,引用类型存取慢值类型在内存栈中存取的是实际数据,引用类型表示指向内存堆中的数据指针和引用值类型在内存栈中是直接释放的,引用类型在内存堆里是需要GC来释放的,无法控制GC值类型继承自System.ValueType,引用类型继承自System.Object版权声明:部分图片文字来源自CSDN博主「任律达」的原创文章原文链接:https://blog.csdn.net原创 2020-06-11 13:56:20 · 146 阅读 · 0 评论 -
[C#基础] 02面向对象的三大特点
封装:从数据角度讲,将一些基本数据类型复合成一个自定义类型。从方法角度讲,向类外提供功能,隐藏实现的细节。从设计角度讲,分而治之,高内聚低耦合,封装变化。属性是封装的最好的体现继承:统一概念,层次化管理代码功能重用现有类的功能,体现了代码的复用性,在此基础上进行扩展,增强维护性,符合开闭原则多态:父类的同一种动作或者行为,在不同的子类上有不同的实现。(父类调用同一方法,在不同的子类上有不同的执行效果)实现手段:虚方法、抽象方法、接口方法。————————————————版权声明:本原创 2020-06-11 13:08:39 · 216 阅读 · 0 评论 -
[C#基础] 01重载和重写的区别
重载overload定义:同一个类中的多个方法具有相同的名称,但参数列表不相同(包括参数个数,参数类型,参数顺序),返回值可相同也可不相同简记:同类、同名、不同参、返回值可同可异重写 override定义:当一个子类继承一个父类,子类中的某一个方法与父类中的某一个方法的名称、参数列表、返回类型完全一致简记:子继承父、同名、同参、同返的方法,方法体不同语法:子类使用override修饰方法原理:在方发表中修改对应的地址三种方法可以重写abstract方法必须在子类必须重写virtua原创 2020-06-11 00:34:41 · 324 阅读 · 0 评论