复杂数据类型

默认情况:0,1,2,3
赋值情况:0,3,4,5;//修改初始值,后面都会改变
定义在class外面,作用域更大
定义在class里面(类种类),只能在类里使用
枚举作用:方便把不同角色的属性归类,避免混淆
只有枚举项是用逗号分隔
非排他性—标志性枚举
enum(关键字) 枚举名(自定义的类型名称)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace m1w2d2_complex_datatype
{
enum QQSta
{
Qme,
Online,
Office,
Leave,
Busy,
}
enum GameSta
{
MenuSta = ,
PlaySta = ,
ExitSta = ,
}
enum Occupation
{
战士 = ,
道士 = ,
法师 = ,
}
class Program
{
static void Main(string[] args)
{
#region 枚举
//基本数据类型
//1、定义变量,2、使用变量
//复杂数据类型
//1,定义类型,2、定义这个类型的变量、2、使用变量
//枚举:一般情况我们用枚举来表示一组状态的集合
//定义类型 一般情况下我们都放在类外面定义
// enum 自定义枚举名
//{
//成员(枚举项),
//成员(枚举项),
//}
//每个枚举项都可以赋整数值
//如果没有赋值,他的值是前一枚举项的值+1
//第一个枚举项如果不赋值,默认值0
//赋值原因:给枚举项建立数学联系(属性相克)
//定义这个类型的变量时,枚举的值,只能是所规定的枚举项
//自定义枚举名 变量名 = 自定义枚举名.某一枚举项
//定义QQ状态的枚举,Qme,Online,Office,Leave,Busy
//提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型。
//整型 int a;a是一个int型的变量,int是整型
//enum QQSta myQQSta;myQQSta是一个QQSta型的变量,QQSta是enum
QQSta myQQSta = QQSta.Leave;
while (true)
{
Console.WriteLine("请输入用户状态:1、Qme,2、Online,3、Office,4、Leave,5、Busy");
bool isRightInput = false;
string input = Console.ReadLine();
switch (input)
{
case "": myQQSta = QQSta.Qme; isRightInput = true; break;
case "": myQQSta = QQSta.Online; isRightInput = true; break;
case "": myQQSta = QQSta.Office; isRightInput = true; break;
case "": myQQSta = QQSta.Leave; isRightInput = true; break;
case "": myQQSta = QQSta.Busy; isRightInput = true; break;
default:
Console.WriteLine("操作错误,请重新输入");
Console.WriteLine();
break;
}
if (isRightInput) break;
}
Console.WriteLine("操作正确");
Console.WriteLine("操作正确,你现在的状态是{0}", myQQSta);
#endregion
#region 枚举的练习
//定义一个游戏的状态,MenuSta,PlaySta,ExitSta,
//1、定义一个枚举类型
//最好在类的外面
//成员就是我们需要的状态
//成员之间用逗号分割
//2、定义一个变量
GameSta myGameSta = GameSta.MenuSta;
//状态都是排他的状态
//标志枚举:可以做非排他状态
//3、使用这个变量
while (true)
{
Console.WriteLine("请输入游戏状态:1、MenuSta,2、PlaySta,3、ExitSta");
bool isRightInput = false;
string input = Console.ReadLine();
switch (input)
{
case "": myGameSta = GameSta.MenuSta; isRightInput = true; break;
case "": myGameSta = GameSta.PlaySta; isRightInput = true; break;
case "": myGameSta = GameSta.ExitSta; isRightInput = true; break;
default:
Console.WriteLine("操作错误,请重新输入");
Console.WriteLine();
break;
}
if (isRightInput) break;
}
Console.WriteLine("操作正确,你现在的状态是{0}", myGameSta);
#endregion
#region 枚举的转换
//枚举与整型之间的转换
//通过强制转换符可以将枚举和整型进行转换
//如果将一个整型 转成 枚举 而没有对应的枚举项
GameSta myGameSta = GameSta.MenuSta;
int a = (int)myGameSta;
Console.WriteLine(a);
myGameSta = (GameSta);
Console.WriteLine(myGameSta);
Console.WriteLine("请输入游戏状态:1、menusta,2、playsta,3、exitsta");
GameSta myGameSta = (GameSta)int.Parse(Console.ReadLine());
string strGameSta = myGameSta.ToString();
Console.WriteLine("操作正确,你现在的状态是{0}", strGameSta);
#endregion
#region 枚举与字符串之间的转换
//枚举转字符串
//对应的变量,调用toString()方法,可以将枚举转字符串
//将字符串转成枚举
//我们用Parse()可以将字符串转成枚举
//由于自定义类型中没有Parse(),所以我们需要调用Enum.Parse();
//Enum.Parse()不会知道你是需要转换到哪个自定义的枚举类
//我们要将自定义的枚举类型告诉他,作为他的第一个参数,使用到typeof();
//typeof()在C#中用于取类型
//Enum.Parse()在参数齐备的情况会将字符串转成object
//我们用强制转换符可以把这个object转换成对应的枚举
//如果你给定的字符串在对应的枚举项中没有,会转换错误
Occupation gameSta = (Occupation)Enum.Parse(typeof(Occupation), "道士");
Console.WriteLine(gameSta);
#endregion
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace m1w2d2_exercise
{
class Program
{
static void Main(string[] args)
{
//在控制台上输出九九乘法表
//1 * 1 = 1 ?
//2 * 1 = 2 ? 2 * 2 = 4 ?
//3 * 1 = 3 ? 3 * 2 = 6 ? 3 * 3 = 9 ?
//4 * 1 = 4 ? 4 * 2 = 8 ? 4 * 3 = 12 ? 4 * 4 = 16 ?
//5 * 1 = 5 ? 5 * 2 = 10 ? 5 * 3 = 15 ? 5 * 4 = 20 ? 5 * 5 = 25 ?
//6 * 1 = 6 ? 6 * 2 = 12 ? 6 * 3 = 18 ? 6 * 4 = 24 ? 6 * 5 = 30 ? 6 * 6 = 36 ?
//7 * 1 = 7 ? 7 * 2 = 14 ? 7 * 3 = 21 ? 7 * 4 = 28 ? 7 * 5 = 35 ? 7 * 6 = 42 ? 7 * 7 = 49 ?
//8 * 1 = 8 ? 8 * 2 = 16 ? 8 * 3 = 24 ? 8 * 4 = 32 ? 8 * 5 = 40 ? 8 * 6 = 48 ? 8 * 7 = 56 ? 8 * 8 = 64 ?
//9 * 1 = 9 ? 9 * 2 = 18 ? 9 * 3 = 27 ? 9 * 4 = 36 ? 9 * 5 = 45 ? 9 * 6 = 54 ? 9 * 7 = 63 ? 9 * 8 = 72 ? 9 * 9 = 81
for (int i = ; i < ; i++)
{
for (int j = ; j <= i; j++)
{
Console.Write("{0} * {1} = {2} \t ", i, j, (i * j));//符号\t是制表符
}
Console.WriteLine();
}
//猜数字游戏:要求用户1输入一个数字(0<x<=100)
//游戏规则:
//a.用户只能猜10次,十次内每次根据用户输入的数据提示用户当前猜的值是太
//大了还是太小了,如果在前5次用户猜中则提示用户:“你太厉害了,第_次就猜中了。”
//b.如果用户猜中了,但是超过5次则提示用户:“不错,不错,猜对了!”
//c.如果用户在最后一次猜中了则提示用户:“海底捞针啊,你真是太幸运了!”
//d.如果用户超过十次都没有猜中则提示用户:“对不起,你已经猜了10次了,
//不能再猜了。”
Random roll = new Random();
int numRandom;
numRandom = roll.Next(, );
Console.Write(numRandom);
int times = ;
bool isRight = false;
Console.WriteLine("请用户1输入一个数字(0<x<=100)");
int numInput = int.Parse(Console.ReadLine());
for (int i = ; i <= ; i++)
{
times++;
if (numInput == numRandom)
{
isRight = true; break;
}
else if (numInput > numRandom)
{
Console.Write("当前猜的值大了");
Console.WriteLine();
numInput = int.Parse(Console.ReadLine());
}
else if (numInput < numRandom)
{
Console.Write("当前猜的值小了");
Console.WriteLine();
numInput = int.Parse(Console.ReadLine());
}
}
if (isRight)
{
if (times <= )
{
Console.Write("你太厉害了,第{0}次就猜中了。", times);
}
else if ( < times && times < )
{
Console.Write("不错,不错,猜对了!");
}
else if (times == )
{
Console.Write("海底捞针啊,你真是太幸运了!");
}
}
else
{
Console.Write("对不起,你已经猜了10次了,不能再猜了");
}
Random roll = new Random();
int numRandom;
numRandom = roll.Next(, );
Console.Write(numRandom);
int times = ;
bool isRight = false;
Console.WriteLine("请用户1输入一个数字(0<x<=100)");
int numInput = int.Parse(Console.ReadLine());
}
}
}

C#学习笔记(六):循环嵌套、复杂数据类型和枚举的更多相关文章

  1. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  2. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  3. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  5. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. 《python基础教程(第二版)》学习笔记 语句/循环/条件(第5章)

    <python基础教程(第二版)>学习笔记 语句/循环/条件(第5章) print 'AB', 123 ==> AB 123 # 插入了一个空格print 'AB', 'CD' == ...

  7. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  8. Linux学习笔记(六) 进程管理

    1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...

  9. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  10. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

随机推荐

  1. 【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜

    pickle(泡菜): picking:将对象转换为二进制 unpicking:将二进制转换为对象 1 >>> import pickle 2 #picking:对象导入到文件中(二 ...

  2. (1.2)mysql 索引概念

    索引的存储分类:mysql目前提供了以下4种索引 [1]B-Tree索引:最常见的索引类型,大部分引擎都支持B树索引 [2]HASH索引:只有Memory引擎支持,使用场景简单 [3]R-Tree索引 ...

  3. OC导航栏跳转指定界面

    方法一: [self.navigationController popToViewController:[self.navigationController.viewControllers objec ...

  4. uvloop —— 超级快的 Python 异步网络框架

    简短介绍 asyncio是遵循Python标准库的一个异步 I/O框架.在这篇文章里,我将介绍 uvloop: 可以完整替代asyncio事件循环.uvloop是用Cython写的,基于 libuv. ...

  5. centos7 设置 静态IP

    centos7 图形设置 yum install NetworkManager-tui #centos7 nmtui edit eth0 #图形设置ip systemctl restart netwo ...

  6. 机器学习理论基础学习14.2---线性动态系统-粒子滤波 particle filter

    一.背景 与卡曼滤波不同的是,粒子滤波假设隐变量之间(隐变量与观测变量之间)是非线性的,并且不满足高斯分布,可以是任意的关系. 求解的还是和卡曼滤波一样,但由于分布不明确,所以需要用采样的方法求解. ...

  7. c++虚函数实现机制(转)

    前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的指针有“多种形态”,这是一种泛 ...

  8. vue框架(二)_vue环境搭建及创建项目

    1.node.js:概念介绍及安装 node.js:是一个基于chrome浏览器的v8引擎,可以运行javascript的环境(平台) 特性:异步IO模型 npm:是一个包管理器(工具),可以按装依赖 ...

  9. Ajax—web中ajax的常用方式

    什么Web2.0的特点? 1:注重用户贡献度 2:内容聚合RSS协议(每小块都个性化,单独加载单独请求,不用全部刷新--Ajax) 3:更丰富的用户体验 Ajax的概念? "Asynchro ...

  10. yii的url写法

    Yii 各种url地址写法 echo Url::home(); 生成入口地址/yii2test/frontend/web/index.php: echo  Url::base();生成入口文件夹地址: ...