一.枚举
 
当变量的取值范围是固定的几个时, 就可以使用枚举类型, 这样会更加简洁方便
 
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. 设计模式(二十一)Proxy模式

    在面向对象编程中,“本人”和“代理人”都是对象.如果“本人”对象太忙了,有些工作无法自己亲自完成,就将其交给“代理人”对象负责. 示例程序的类图. 示例程序的时序图.从这个时序图可以看出,直到调用pr ...

  2. fenby C语言P21

    数据类型 数组名字[个数]: #include <stdio.h> int main(){ int a[8]; float b[9]; char c[10]; return 0;}

  3. 在.NET Core 3.0中发布单个EXE文件

    假设我有一个简单的“ Hello World”控制台应用程序,我想发送给朋友来运行.朋友没有安装.NET Core,所以我知道我需要为他构建一个独立的应用程序.很简单,我只需在项目目录中运行以下命令: ...

  4. 【Maven学习笔记】mvn help:system 命令的说明

    mvn help:system 命令的说明 笔者用得是windows 10 x64系统 下载了Maven3,正确配置了系统变量M2_HOME的值,并且添加到Path变量路径当中. 简单来说,Maven ...

  5. 百度NLP预训练模型ERNIE2.0最强实操课程来袭!【附教程】

    2019年3月,百度正式发布NLP模型ERNIE,其在中文任务中全面超越BERT一度引发业界广泛关注和探讨.经过短短几个月时间,百度ERNIE再升级,发布持续学习的语义理解框架ERNIE 2.0,及基 ...

  6. Spring Boot 2.x监控数据可视化(Actuator + Prometheus + Grafana手把手)

    TIPS 本文基于Spring Boot 2.1.4,理论支持Spring Boot 2.x所有版本 众所周知,Spring Boot有个子项目Spring Boot Actuator,它为应用提供了 ...

  7. Project Euler 51: Prime digit replacements

    通过替换*3这样一个两位数的第一位,我们可以发现形成的九个数字有六个是质数,即13, 23,43,53,73,83.类似的,如果我们用同样的数字替换56**3这样一个五位数的第三位和第四位,会生成56 ...

  8. python——namedtuple

    namedtuple()概念理解分享 我们都知道元组tuple的概念,tuple是一个定义之后就不能够更改的可迭代对象,namedtuple作为tuple的兄弟具有同样的属性,一旦定义就不可以更改.但 ...

  9. JavaScript-原型对象与原型链

    原型对象 1.每个对象一定会有一个原型对象 2.原型对象实际是构造实例对象的构造器中的一个属性,只不过这个属性是个对象 3.这个原型对象中的属性与方法,都会被对象实例所共享(类似python中的类方法 ...

  10. 你知道MySQL中的主从延迟吗?

    前言 在一个MySQL主备关系中,每个备库接受主库的binlog并执行. 正常情况下,只要主库执行更新生成所有的binlog,都可以传到备库并被正常的执行,这样备库就能够达到跟主库一样的状态,这就是最 ...