C#从入门到Untiy开发の学习笔记-核心篇

1.面向对象三大特性:封装,继承,多态
2.新建解决方案和新建项目是不同的
3.声明类一般在namespace中
4.类包含的内容:特征,行为,保护特征,构造函数,析构函数,索引器,运算符重载,静态成员
5.类变量声明和类声明不同,类变量声明(实例化)的方法有三种(不同的是在于初始化过程),类名 变量名;类名 变量名=null;(与前两个不同,直接分配一个独有空间)类名 变量名=new 类名();
6.成员变量可以不初始化,同类名类型的初始化直接为空值,不能实例化(防止循环定义,堆的毁灭者)
7.访问修饰符:public:内部和外部,private(默认):内部,protected:内部和子类
8.默认值:值类型:数字类=0,bool类=false,字符类=null;引用类型:null。default查询类型
9.成员方法必须通过对象来使用
10.注意类和结构体的区别
11.构造函数的作用就是初始化内中的变量,new新的对象的时间,就是使用了默认的无参构造函数
12.重用构造函数代码:this(参数1[可以是常量或是空])【代表先调用含有参数1的构造函数,后执行这个构造函数,类似函数中的继承
13.析构函数前面加~,函数名与类名同名
14.内存回收时,自动调用析构函数,垃圾回收机制管理堆中的内存
15.Loading过场景时调用垃圾回收机制(主动调用),GC.Collect();
16.成员属性,保护成员变量,可在设置访问之前添加一些额外的条件(额外的抽象),主要用于私有变量,get要设置return,set要用value关键字;作用校对,限制,检验,加密处理
17.get,set可加访问修饰符,让修改值和访问值的操作分离;注意不能让get和set访问权限同时低于成员属性
18.get和set可以只有一个,另外没写就是不能用
19.自动属性,外部能够得到不能改的特征
20.索引器,索引成员变量中数组的值,访问规则自己定,同时重载中括号
21.索引器不用写函数名,要写返回类型
22.friends = new Person[ ] { value };
23.静态成员,直接用类名点出使用,不需要实例化对象,修饰符为static
24.静态存储区,与程序同生共死,基本不参与垃圾回收,非静态可调用静态
25.常量是特殊的静态变量,静态可以不初始化
26.静态类,不能被实例化,可以作为工具使用,具有唯一性,只能包含静态变量和方法的静态成员
27.静态构造函数,无访问修饰符的修饰和参数,只会自动调用一次[静态类中第一次调用静态成员后调用,普通类中第一次使用类实例化调用]
28.函数是如何在内存中存储的
29.拓展方法,写在静态类中的静态函数,this 拓展类名 参数名,为非静态变量类型添加新方法;同名则用非静态变量类型自己的方法;权限:静态类无法添加方法
30.运算符重载operator,一定使用公共静态方法 =public static,返回类型,operator,+(参数列表),可多次重载
31.注意哪些是可重载与不可重载的运算符,条件运算符需要成对出现
32.内部类,是类中声明的类,表现亲密关系,访问修饰符很重要
33.分布类,把一个类分成几部分声明,partial关键字,方法也可以分布
34.继承,被继承的类为父类,基类,超类;继承的类为子类,派生类;继承所有的成员特征行为;(单根性)子类只有一个父类,(传递性)子类可继承父类的父类
35.继承后,父类的私有private无法被子类使用;子类使用外部不使用,则用protected;同名变量,子类覆盖父类的成员使用new关键字(不建议覆盖使用)
36.里氏替换原则,父类出现的地方,子类都可以替代;父类声明,子类构造;语法中就是用父类容器装载子类对象;多态;父类类型变量装子类实例对象;;;方便对象存储和管理
37.is判断是否能转化为(是)指定类:判断是否为继承父类的子类;as将对象转换为指定类:转换成父类下的子类;作用:约束继承泛滥
38.继承中的构造函数,先调用父类的构造函数,在调用子类的构造函数;父类的无参构造很重要,子类会默认调用;base指定调用父类的构造函数,在子类的构造函数写上:base(参数列表);this代表自己的,base代表父类的
39.万物之父object,可以装任何东西F12查看源代码,引用类型也可以强转(son)object,和(float)int类似,但是也可以用as关键字转
40.装箱:栈内存到堆内存,用object存值类型;拆箱:堆内存到栈内存,把object存的值类型拿出来;类型转换;var时自动类型推断
41.密封类,sealed关键词,就是结扎,让其无法被继承
43.多态vob,让父类的子类的方法不一样(编译时的非函数重载);虚函数v,重写o,父类b;vob,抽象函数,接口
44.虚函数,用vitual关键词;重写,用override关键词;防止装箱和拆箱的类方法表现不一致;父类方法特征保持base.behavior();as转型后子类方法覆盖,不覆盖则是让父类的虚方法转到子类的override中
45.抽象类,abstract关键词,无法被实例化,可包含抽象方法和虚方法,继承抽象类必须重写;抽象方法,无法私有,必须重写,无函数体
46.虚方法和抽象方法,前者可选择重写,后者必须重写
47.接口,用interface关键词,只包含方法,属性,索引器,事件,不包含对象,成员不能被实现;是用来继承的,不是用来实例化的,类可继承多个接口,继承后必须实现所有成员且全加上public;解决多重实现问题;符合里氏替换原则
48.抽象类抽象属性,接口规范行为;抽象 就是把行为抽象出去,让需要的类去继承
49.显式实现接口 接口名.行为名
50.密封函数,sealed,无法再之后的子类中被重写
51.命名空间,using System(namespace)之后可以直接使用,不然需要写出名字点,同名需要指明出处,只能使用名字点的方法;可以相互嵌套,注意嵌套时,外层不能直接使用内层的东西,需要using 外层.内层才能直接使用
52.命名空间中的类默认为internal(工程项目之内调用,pulic可以在工程之间使用)
53.万物之父中的静态方Equals和ReferenceEquals引用是否相等;成员方法,GetType和MemberwiseClone(浅拷贝,返回一个新对象,新对象的引用变量和老对象一致)
54.string?,?的意思应该是是string就直接返回,不是的话就调用tostring转成string再返回
55.结构体和类的区别;结构体是值类型,存在栈中;类是引用类型,存在堆中;数据集合用结构体,继承多态用类
56.抽象类和接口的区别;都不能实例化,子类必须实现未实现的方法;抽象类只能单一继承,可以有构造函数;接口默认public,不能含有成员变量
57.String:正向查找字符位置.IndexOf();反向查找字符位置.LastIndexOf();移除指定位置后的字符Remove();替换指定字符串Replace();大小写转换ToUpper()ToLower();字符串截取Substring();字符串切割split();
58.StringBuilder:(string字符串每次修改都会创建新的空间)System.Text,具有容量的概念.Capacity查询,可减少垃圾的产生;StringBuilder str = new StringBuilder(“123”,20【代表最大容量】);增加:Append();插入:Insert();删除:Delet();修改:Replace();清空:Clear();查询:索引器[];

var dict = new Dictionary<string, int>();
dict[“first”] = 10;
dict[“second”] = 20;
dict[“third”] = 30;

Console.WriteLine(string.Join(“; “, dict.Select(entry => $”{entry.Key}: {entry.Value}”)));这段代码是 C# 语言的代码。它创建了一个 Dictionary 类型的变量 dict,这个变量可以存储 string 类型的键和 int 类型的值。然后,它将键值对 “first”: 10,“second”: 20 和 “third”: 30 添加到 dict 中。最后,它使用 Console.WriteLine 方法打印出 dict 中所有键值对的字符串表示形式,每个键值对之间用分号隔开。
LINQ 表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值