1、继承时的一个概念,“把不变的内容写到基类,在子类里写经常改变的内容”。导致一个类仲只要有经常改变的内容,我们就要为它声明一个派生类,如果改变的部分比较多,我们还得声明多个或多层派生类,导致派生结构非常复杂。

有了派生类,我们按照逻辑切分成几块,每块作为一个逻辑单元单独更新迭代,这些分块合并起来还是一个类。

namespace ConsoleStudy
{partial class StudyPartial{public string Report1(){return "report=>原方法";}static void Main(string[] args){StudyPartial sp = new StudyPartial();var report1 = sp.Report1();var report2 = sp.Report2();Console.WriteLine(report1);Console.WriteLine(report2);}}partial class StudyPartial{public string Report2(){return "report=>补充方法";}}
}

输出结果可以看到,补充的方法也属于StudyPartial这个类。

2、结构体是值类型数据结构,它使得一个单一变量可以存储各种数据类型的相关数据。struct关键字用于创建结构体

  • 值类型、可装/拆箱
  • 可实现接口,不能派生子类/结构体
  • 不能有显式无参构造器
namespace ConsoleStudy
{class StudyStruct{static void Main(string[] args){Book book1 = new Book();book1.author = "Sunkist";book1.title = "C#";book1.subject = "computer";Console.WriteLine("book1 title:{0}",book1.title);Console.WriteLine("book1 author:{0}", book1.author);Console.WriteLine("book1 subject:{0}", book1.subject);}}struct Book{public string title;public string author;public string subject;}
}

3、结构体实现接口

namespace ConsoleStudy
{class StudyStruct{static void Main(string[] args){var book1 = new Book();book1.author = "Sunkist";book1.title = "C#";book1.subject = "computer";Console.WriteLine("book1 title:{0}",book1.title);Console.WriteLine("book1 author:{0}", book1.author);Console.WriteLine("book1 subject:{0}", book1.subject);book1.write();}}struct Book:IWrite{public string title;public string author;public string subject;public void write(){Console.WriteLine("U can write on the book");}}interface IWrite{void write();}
}

输出结果:

结构体不能有显示无参构造器,它已经有默认的无参构造器,初始化字段为0或者null。

那么有参构造呢?

可以说有参构造是没有意义的,因为创建对象后就是需要给字段赋值。

3、枚举

  • 人为限定取值范围的整数
  • 整数值的对应
  • 比特式用法

其中枚举列表的每一个符号表达一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是0..

namespace ConsoleStudy
{class StudyEnum{static void Main(string[] args){var employee = new Person {Level = Level.Employee};var bigBoss = new Person {Level = Level.Bigboss};Console.WriteLine(employee.Level>bigBoss.Level);Console.WriteLine("Employee:{0}",(int)Level.Employee);Console.WriteLine("Bigboss:{0}",(int)Level.Bigboss);}}enum Level{Employee,Manager = 100,Boss = 200,Bigboss}class Person{public int Id { get; set; }public string Name { get; set; }public Level Level { get; set; }}
}

输出结果:

其实在光标放到vs里面时,就可以看到

枚举列表里每一个符号都有一个对应的整数值。

比特位用法的更多内容参考官方文档 Non-exclusive members and the Flags attribute

c# 拷贝结构体_C#学习之Partial、结构体、枚举相关推荐

  1. # 遍历结构体_C#学习笔记05--枚举/结构体

    一.枚举 当变量的取值范围是固定的几个, 例如性别--男,女; 英雄类型 -- 法师, 刺客.战士, 射手等等. 这时就可以使用枚举类型, 会更加简洁方便. 1.1.定义: 访问修饰符 enum 枚举 ...

  2. 多智能体强化学习:多智能体系统

    1 多智能体系统 多智能体系统 (Multi-Agent System,缩写MAS) 中包含 m 个智能体,智能体共享环境,智能体之间会相互影响. 一个智能体的动作会改变环境状态,从而影响其余所有智能 ...

  3. c语言 选择结构,C语言学习:选择结构

    综述 (1)if语句的一般形式 (2)switch语句的介绍 (3)关系运算符和关系表达式 (4)逻辑运算符和逻辑表达式 (5)条件运算符和条件表达式 (1)if语句的一般形式 在C中选择结构用到最多 ...

  4. 多智能体通信:基于通信的多智能体强化学习研究综述

    题目:A Survey of Multi-Agent Reinforcement Learning with Communication 出处:arXiv 2022 摘要:通信是协调多个智能体行为的有 ...

  5. 《强化学习周刊》第40期:PMIC多智能体强化学习、Lazy-MDPs、CTDS

    No.40 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<强化学习周刊>已经开启"订阅功能",以后我们会向您自动推送最 ...

  6. 多智能体强化学习入门

    参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...

  7. 多智能体强化学习(五)MARL的挑战

    多智能体强化学习(五)MARL的挑战 1.组合中的复杂性 2. 多维的学习目标 3. 非平稳性问题 4. 当出现N>>2时的可伸缩性问题 与单智能体RL相比,多智能体RL是一个更好地匹配现 ...

  8. 多智能体强化学习综述-Lucian Busoniu

    Multi-Agent Reinforcement Learning: A Survey Lucian Busoniu Robert Babuska Bart De Schutter,2006 文章目 ...

  9. 张海峰-从博弈论到多智能体强化学习

    文章目录 内容摘要 群体决策智能研究背景 博弈论 多智能体强化学习 研究展望 内容摘要 ·随着以图像识别为代表的"感知智能"日趋成熟,越来越多的人工智能研究者开始关注以AlphaG ...

最新文章

  1. android获取时区时间格式,考虑时区的日期/时间转换-Android
  2. android解析ip地址,android – 如何从IP地址解析网络主机名
  3. 一步一步学DataGuard之基础篇
  4. .NET实现SOA(1)
  5. 事实上着就是MAYA4.5完全手册插件篇的内容
  6. 诸多研究生的一个通病:对导师过度依赖!
  7. 索尼入局电动汽车市场 宣布成立移动出行公司
  8. stm32f103r8t6的晶振频率_STM32F103R8T6[1]
  9. VB 二进制数组与十六进制字符串相互转换
  10. 绅士宝智能机器人怎样_如何打败“机器人淘汰三原则”
  11. ML/DL-复习笔记【九】- 神经网络中各层的计算量与参数量
  12. 我去,还在这样读写 excel 这也太低效了吧!
  13. marlin固件解析
  14. 发送网页内容到onenote_将网页中的信息快速添加到OneNote笔记本的方法
  15. java 自动生成密码_java 自动生成密码
  16. Error: unconverted data remains: AM 解决方法
  17. 基于tensorflow的Word2Vec实现
  18. 链改价值节点,构建区块链命运共同体
  19. 关于在Unity2018中使用Vuforia实现基础图片识别AR展现效果
  20. 计算机无法ghost安装系统安装系统安装,详细教您重装Ghost系统错误怎么办

热门文章

  1. Symantec防病毒企业版10.1部署方法一
  2. Web2.0时代,你得到什么?
  3. Linux一键安装web环境全攻略(阿里云服务器)
  4. 怎么用js调用C#后台方法
  5. jupyter-使用及设置密码
  6. MySQL 命令行导出、导入Select 查询结果
  7. mysql数据导入导出方法总结
  8. Git停止跟踪rm -r --cached与ignore区别
  9. promise在promise情况下进行使用async与await
  10. PHP的global与GLOBAL