C#个人学习总结(泛型、partial类、枚举、结构体)

泛型的应用场景

我们有一个Box类和好几个商品的种类,每个商品又都有自己的独特属性(颜色,作者,产地)之类的。我想用这个Box装所有货物怎么办捏

 想到的方法是用Object这个类,但是呢得到货物的属性就格外困难。

Apple apple = new Apple(){Color = "Red"};
Book book = new Book(){Name = "New Book"};
Box box1 = new Box(){Cargo = apple};
Box box2 = new Box(){Cargo = book};
Console.WriteLine((box1.Cargo as Apple)?.color);

放东西简单,拿出来就不好使了

接下来泛型登场!!!!!!!!

 所有泛型实体都不能直接拿来编程,想要编程要先实现特化

 Box<Apple>当中一定是类名,因为他是一个类型参数,不可能是一个变量名。这样呢我们输入Cargo.之后就能直接看到Color已经出现了,这样就消除了成员膨胀,也方便读取

泛型接口

哎呀,接口不也可以实现类似功能嘛。好的,泛型接口来了

 学生类有了个泛型接口,自己也变成了泛型类捏。假如学生太多啦!int都不够用啦!那简单,

Student<ulong> stu = new Student<ulong>();

stu.ID = 1000001;

在这里我们也可以直接实现特化之后的接口,这样Student也不是泛型类了,ID直接就是ulong类型

C#中自带的泛型接口有很多,IDictionary就是其中之一(要using System.Collections.Generic),这里分别用int 和 string特化TKey和TValue

 泛型委托

使用Action泛型委托来直接调用(只能引用没有返回值的方法)

 接下来是Func泛型委托

 前两个int代表着参数类型,后一个int是返回值类型

如果方法只在这里出现,那么就是用lambda表达式

 其实a和b前面的double也可以去掉

partial类

简而言之就是一个类由于各种原因,想添加一些方法,但又不想改变原来的类,那就用partial。

他居然还能不同的部分用不同的编程语言书写 !🐂!(保证命名空间一致哦

枚举

枚举是unity中的FSM的常客,主要作用是规范属性,如果用字符串类型,多人协作总有笨b乱写。

他有个好玩的点,枚举中每个值都有个对应的int值

他们依次是100,101,102,103。不给emploee赋值的话就是0,1,2,3(看见没这里就没分大小写,所以枚举好啊) 

这就有个绝妙的方法,枚举只能让我选一个,但如果要有技能这样能增删的功能咋办。这时候我们分别给他们赋值为1,2,4,8也就是2进制。

 这时候打印出person.Skill的话将会是15,然后用图中的用法就能知道我们会不会Cook

(魔兽世界的拼接地图就是这种用法,除开游戏,文件的打开方式也可以采用这个方法)

再写点结构体相关的

来个经典时尚结构体

 首先结构体不能继承自其他结构体,但接口彳亍

然后呢不能有显式的无参构造器

                               

              这是无参                                                                     这是有参

有了构造器,这么写

没有构造器的话,你就只能像下面这么写

 这是个经典面试题,这不是引用而是copy

所以stu2是1001,stu1不变

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值