一.枚举
 
当变量的取值范围是固定的几个时, 就可以使用枚举类型, 这样会更加简洁方便
 
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. django-ForeignKey,OneToOneField,ManyToManyField

    进入到django自带的related.py中,可以看到 1.ForeignKey 初始化的参数有: to, on_delete, related_name=None, related_query_n ...

  2. 设计模式C++描述----12.享元(Flyweight)模式

    一. 概述 在面向对象系统的设计何实现中,创建对象是最为常见的操作. 这里面就有一个问题:如果一个应用程序使用了太多的对象,就会造成很大的存储开销.特别是对于大量轻量级(细粒度)的对象,比如在文档编辑 ...

  3. 用c语言实现前序创建二叉树(递归),分别用前序,中序,后序遍历,以及分别输出节点个数和叶子节点个数

    本人c语言小白一枚,近期在学习数据结构(c语言版),特写此随笔,做一些总结和分享,如有不当之处,请各位技术大牛斧正 首先我们用一个结构体来抽象树的结点,代码如下(这里我们存放的数据为char型,大家可 ...

  4. Python网络爬虫之cookie处理、验证码识别、代理ip、基于线程池的数据爬去

    本文概要 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 引入 有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时, ...

  5. ulua、tolua原理解析

    在聊ulua.tolua之前,我们先来看看Unity热更新相关知识. 什么是热更新 举例来说: 游戏上线后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏 ...

  6. Windows 程序包管理器 Chocolatey:一条命令装软件

    Windows 程序包管理器 Chocolatey:一条命令装软件 本文原始地址:https://sitoi.cn/posts/46278.html 介绍 Chocolatey 是一种软件管理解决方案 ...

  7. lua程序设计(一)

    摘要:lua程序设计第二版学习笔记 脚本语言的基础语法大都比较简单,这里只列举一些lua独有,或者需要特别注意的语法点. 书中前三章的内容是一些惯常的引言,基础数据类型,运算符等内容,相对简单,这里就 ...

  8. Codeforces 游记

    早就对这个比赛平台有所耳闻(事实上,之前打过一场div2惨的一批……)今天去打了一场div3. 首先还是吐槽一下这个毛子时区的比赛时间,从十点三十五到零点三十五……这种时间要不是在家根本没法打嘛…… ...

  9. OpenCV图像处理以及人脸识别

    OpenCV基础 OpenCV是一个开源的计算机视觉库.提供了很多图像处理常用的工具 批注:本文所有图片数据都在我的GitHub仓库 读取图片并显示 import numpy as np import ...

  10. net core WebApi——April.Util更新之权限

    目录 前言 权限 中间层 小结 前言 在之前已经提到过,公用类库Util已经开源,目的一是为了简化开发的工作量,毕竟有些常规的功能类库重复率还是挺高的,二是为了一起探讨学习软件开发,用的人越多问题也就 ...