一.枚举
 
当变量的取值范围是固定的几个时, 就可以使用枚举类型, 这样会更加简洁方便
 
1.1.定义:
 访问修饰符  enum 枚举类型名
{
成员1,
成员2,
成员3,
...
}
public enum Days
{
Mon = ,
Tue,
Wed,
Thu,
Fri,
Sat,
Sun
}
  1. enum: 是枚举的关键字;
  2. Days 枚举类型名;
  3. Mon, Tue, Wed,...是枚举成员变量 枚举类型赋值只能是成员变量;
  4. 枚举的默认值是从0开始的, 可以人为改变 以下个会在上一个的基础上默认加1;
 
1.2.枚举的使用
语法格式: 枚举类型   枚举变量名 = 枚举类型.枚举值:
Days date = Days.Sun;
Console.WriteLine(date); // Sun
如果想要得到 成员变量对应的数字 可以进行一个强制类型转换
Console.WriteLine((int)date); //
注意:
  1. 当给枚举变量赋值时, 其值只能通过枚举类型名加点运算符, 从定义的枚举类型后面的{}里面选取, 故枚举类型限制了枚举变量的取值, 因此在编程过程中, 使用枚举类型可以让我们的数据保持统一.
  2. 系统会给枚举值赋一个默认的int类型的值, 第一个枚举值是0, 后面的枚举值所对应的int 值依次加1; 故枚举类型本质上也是个int类型的值, 可以在int 类型和枚举类型之间进行转换, 转换时需要使用强制类型转换符;
类型转换
  1. 字符串转换枚举类型 Days date = (Days)Enum.Parse(typeof(Days), Console.ReadLine());
  2. 枚举类型成员转换成字符串 string str = Enum.GetName(typeof(Days), date);
  3. 枚举转换为int类型 int date3 = (int)Days.Sat;
  4. 整型转换为枚举类型 Days date1 = (Days)Enum.ToObject(typeof(Days), 1); / Days date2 = (Days)1;
 
二.结构体
 
结构体: 存放多个数据类型的容器 (数据类型可以不相同)
2.1.定义格式:
访问修饰符 struct 结构体类型名
{
访问修饰符 数据类型 变量名;
访问修饰符 数据类型 变量名;
...
} public enum Gender
{
M,
W
}
public StudentInfo
{
public string name;
public int age;
public Gender sex;
}

注意:
  1. struct 是关键字, 用来定义一个结构体类型;
  2. struct 后面才是类型名, 类型名的每个单词首字母都要大写;
  3. 结构体里面每个变量都是结构体类型StudentInfo的一个成员, 简称位成员变量;
  4. 结构体里面的成员变量只声明, 不赋值, 需要使用结构体变量来给其成员变量赋值;
  5. 每个成员变量前面暂时使用public 关键字来修饰, public 是访问修饰符, 成员变量前面只有使用public修饰, 才可以在结构体外面被直接调用赋值.
2.2.结构体的使用
 
基本操作

说明:
  1. 使用结构体变量加上点运算符, 点出结构体中 public 修饰的成员, 然后再根据成员的数据类型给成员赋值;
  2. 结构体变量做为一个整体不能直接参与运算, 需要使用变量包含的某个成员进行运算;
2.3.结构体数组
如上, 创建好结构体之后我们定义了两个对象, 然后用cw输出; 试想, 如果我们定义的对象有一百一千个, 当我们想要输出这些对象的数据时候我们就得打一百一千行代码, 这样一来代码就会很繁琐. 如何优化呢? 我们可以用一个数组来存储定义的各个对象, 然后就可以通过对数组的遍历 仅仅写一个for/foreach 来取得数值.
 
 

注意:
1.在定义数组的时候. 因为我们每个元素都是结构体类型的, 所以数组的类型也必须要是结构体类型的!
2.item 得到的是数组元素, 而每个元素都是一个结构体, 因此不能直接把item打印出来;
 
2.4 结构体数组的排序
 
例如: 我们有一个结构体里面学生的基础信息, 定义一个结构体类型的数组来存放n个学生的信息, 现在想要对该数组进行一个排序, 按照学生年龄的升序进行.
 

 
 
 
 
 
 
 

C#学习笔记05--枚举/结构体的更多相关文章

  1. C#学习笔记_12_枚举&结构体

    12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch c ...

  2. Go语言学习笔记十: 结构体

    Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

  3. matlab学习笔记12_3串联结构体,按属性创建含有元胞数组的结构体,filenames,isfield,isstruct,orderfields

    一起来学matlab-matlab学习笔记12 12_3 结构体 串联结构体,按属性创建含有元胞数组的结构体,filenames,isfield,isstruct,orderfields 觉得有用的话 ...

  4. Swift 学习笔记 (类和结构体)

    类和结构体是一种多功能且灵活的构造体.通过使用与现存常量 变量 函数完全相同的语法来在类和结构体中定义属性和方法以添加功能. Swift中不需要你为自定义的类和结构体创建独立的结构和实现文件.在Swi ...

  5. matlab学习笔记12_2创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段

    一起来学matlab-matlab学习笔记12 12_2 结构体 创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段 觉得有用的话 ...

  6. APUE学习笔记——4.2结构体 struct stat 及其相关函数介绍

    以下不少内容来自man手册 结构体struct stat         结构体struct stat用于保存文件相关的所有信息.         struct stat的基本成员如下所示 struc ...

  7. thinkphp学习笔记1—目录结构和命名规则

    原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...

  8. CLR_Via_C#学习笔记之枚举

    CLR_Via_C#学习笔记之枚举 枚举类型(Enum)定义的一组"符号名称/值"配对:因为枚举类型使用程序更容易编写.阅读和维护,而且它是强类型: 枚举是值类型:由System. ...

  9. 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归

    机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...

随机推荐

  1. 设计模式C++描述----17.备忘录(Memento)模式

    一. 备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 结构图: 使用范围: Memento 模式比较适用于功能 ...

  2. Spring使用@Async注解

    本文讲述@Async注解,在Spring体系中的应用.本文仅说明@Async注解的应用规则,对于原理,调用逻辑,源码分析,暂不介绍.对于异步方法调用,从Spring3开始提供了@Async注解,该注解 ...

  3. ArcGIS Engine空间分析之缓冲区分析的实现

    缓冲分析(BufferAnalysis)的结果是一个面状要素——即缓冲要素,点状要素.线状要素和面状要素,被缓冲分析功能处理过之后,它们的周围产生一个缓冲区域,该区域即新产生的面状要素. 在缓冲方向上 ...

  4. Kali Linux——迈向网络攻防

    自从进入大三的课程后,在已学的高数.线代.数论.概率论.信息论.通信等知识的技术上,开始了网络信息安全.网      络攻防的学习.俗话说得好,磨刀不误砍柴工,开始网络攻防之旅也势必要一个好的工具.然 ...

  5. Python 加密 shellcode 免杀

    Python 加密 shellcode 免杀 环境准备:   Windows7 32 位系统: Shellcode 使用 kali linux Metasploit 生成 shellcode Wind ...

  6. Java IO编程——文件拷贝

    在操作系统里面有一个copy命令,这个命令的主要功能是可以实现文件的拷贝处理,现在要求模拟这个命令,通过初始化参数输入拷贝的源文件路径与拷贝的目标路径实现文件的拷贝处理. 需求分析: ·需要实现文件的 ...

  7. python中str.isdigit()用法

    str.isdigit()中只包含数字返回true,包含其它则返回false

  8. [考试反思]阶段性总结:NOIP模拟测试7~13

    苟且Rank#1.第二次分机房结束. 得到了喘息一会的权利. 在最后两场考试中大脸skyh慷慨舍弃264分让出Rank#1的故事也十分感人 然而还是有很多东西值得思考. 虽说是反思,但是还是有一些地方 ...

  9. MySQL 语句执行过程详解

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...

  10. 主席树学习笔记(静态区间第k大)

    题目背景 这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树.同时请注意常数优化 题目描述 如题,给定N个整数构成的序列,将对于指定的闭区间查询其区间内的第K小值. 输入输出 ...