复杂数据类型

默认情况: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. Unity 补充安装

    当需要下载 安装Unity之时没勾选的一些组件时, 1.去Unity官网点开Unity旧版本 2.找到你的Unity版本,然后只要下载Unity安装程序 3.点开安装程序,去掉已安装组件的勾选,勾选你 ...

  2. for练习相关

    for嵌套: 大圈套小圈思想:有一种重复的情况而这种情况每一次对应另外情况多次. ------------------------------------------------------- 例如: ...

  3. application实例

    application详解及实例 application对象用来在多个程序或者是多个用户之间共享数据,用户使用的所有application对象都是一样的,这与session对象不同.服务器一旦启动,就 ...

  4. (转)Springboot 中filter 注入对象

    问题:我建立一个全局拦截器,当然,这是测试的时候建立的,我把它命名为LogFilter,它继承了Filter,web应用启动的顺序是:listener->filter->servlet,而 ...

  5. poj1753Flip Game(dfs)

    Flip Game  思想很不成熟, #include <stdio.h>#include <string.h>#include <stdlib.h>int map ...

  6. JavaScrip总体

    js: 简单对象: 数字 | 字符串 | 这三个像对象,有方法,但不可变 布尔值 | null undefined 对象:无类型,k-v对集合:函数.数组.REG.... JavaScript是一种l ...

  7. XenServer:使用XenCenter开设VPS(多图完整版)

    打铁要趁热,咱们接着来玩XenServer.昨天赵容用机房提供的KVM给服务器装了XenServer,今天我们来玩更有意思的:开小鸡.装好XenServer之后,访问我们的服务器IP,就可以看到Xen ...

  8. 机器学习理论基础学习3.2--- Linear classification 线性分类之线性判别分析(LDA)

    在学习LDA之前,有必要将其自然语言处理领域的LDA区别开来,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),是一种处理文档的主题 ...

  9. Summary: sorting Algorithms

    Insertion sort is a simple sorting algorithm that builds the final sorted array (or list) one item a ...

  10. 有意思的JSON.parse()、JSON.stringify()

    前言 现在JSON格式在web开发中非常重要,特别是在使用ajax开发项目的过程中,经常需要将后端响应的JSON格式的字符串返回到前端,前端解析成JS对象值(JSON 对象),再对页面进行渲染. 在数 ...