一.枚举
 
当变量的取值范围是固定的几个时, 就可以使用枚举类型, 这样会更加简洁方便
 
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. 封装自己通用的 增删改查的方法 By EF

    封装自己的通用CURD By EF using System; using System.Collections.Generic; using System.Data.Entity; using Sy ...

  2. SQlserver高效分页,还在使用row_number(),top之类的?

    row_number() ,还是top 这些分页的方法比较老了,效率不是很高效的, Sqlserve2012就有了,效率对比比较明显,尤其是数据比较大的情况下(我们可以观看查询执行计划) Offset ...

  3. vue-cli 如何使用vue-awesome?

    font-awesome 有很多图标字体可供使用,那么,如何在vue中使用呢? 进入重点... 1.安装vue-awesome npm insatll vue-awesome 2.在main.js 注 ...

  4. 设计模式C++描述----05.职责链(Chain of Responsibility)模式

    一. 概述 职责链模式: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 二. 举个例子 员工要求加薪 ...

  5. 数竞大佬jhc的三角函数复习题

    班主任让数竞大佬jhc整理的三角函数复习题,我参与编辑完成.个别题目来自参考书.度盘pdf格式下载:复习题提取码419d,答案提取码5a12 "单纯"的运算 本文由蒋浩川原创,由\ ...

  6. SCOI2005 繁忙的都市 [Luogu P2330]

    题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条 ...

  7. NOIP模拟 14

    垃圾成绩,一点都不稳定. 如果把数组开小的分得到的话..总分还挺不错.. 那又能怪谁,都快NOIP了还犯这种傻逼错误 nc哥是要阿卡的节奏..真是太强了 某kyh也不知道偷了谁的rp,分高的一批 wd ...

  8. linux4.1内核配置以及编译及千兆网卡dp83867网卡驱动移植

    一  内核配置编译 1首先解压内核 tar jxvf linux-at91-4.1.tar.bz2: 2下载编译链 在ubuntu命令行中输入sudo apt-get install gcc-arm- ...

  9. python经典算法题:无重复字符的最长子串

    题目:无重复字符的最长子串. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子 ...

  10. H5+app -- 关于ajax提交问题

    1.前阵子在做系统的h5+ app为满足手机端也能进行业务操作,例如:提货,扫描入库之类的.所以就要将做接口,从手机端调用后台系统的方法. 2.例如这样的请求格式,但是呢,每次请求它都直接跳到erro ...