不要为了写笔记而学习!!!

其实学完一章再返回复习,然后做笔记,真的很费时间(电子书还不方便)。当然,复习带来的价值,是值得花时间的。

  • 枚举、结构

枚举的类型有限(short、byte...)且是相同的,在MSDN上找到枚举的一些示例,觉得这个还不错:

        enum myWeekDay { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };int i = 3;myWeekDay today = (myWeekDay)i;

枚举是需要先声明的,然后再通过新建一个变量(today)为枚举类型来使用。枚举默认的基本类型值从0开始,递增1,这叫等差数列

枚举声明时,建议放在命名空间,当然,也可以放在类或结构中。将其它变量赋值给枚举类型时,需要强制转换,例如:today = (myWeekDay)myByte。当然,还有Enum.Parse(typeof(),)命令,就不具体研究了,用时再来看。

结构(struct就比较好用了,一个结构内支持不同基础数据类型。同样需要先声明结构,然后再声明变量为该结构类型,从而使用:

    enum orientation : byte { north = 1, south = 2, east = 3, west = 4};struct route{public orientation direction;public double distance;}

使用public:让调用该结构的代码可以访问该结构的成员。具体应用:

            route myRoute;int myDirection = -1;double myDistance;Console.WriteLine("1) North\n2) South\n3) East\n4) West");do{Console.WriteLine("请选择一个行驶方向:");myDirection = Convert.ToInt32(Console.ReadLine());} while (myDirection < 1 || myDirection > 4);Console.WriteLine("请输入一个距离:");myDistance = Convert.ToDouble(Console.ReadLine());myRoute.direction = (orientation)myDirection;myRoute.distance = myDistance;Console.WriteLine("指定方向 {0} 的距离是 {1}", myRoute.direction, myRoute.distance);

注意myRoute.direction = (orientation)myDirection这一行代码,应该是枚举的应用场景:只需要指明枚举值中的基本类型值i,再通过(enumName)i的方式,即可取得对应的字符串。

声明一个结构:route(创建的结构名) myRoute,再通过 myRoute.属性 的方式访问结构中的成员。

  • 数组

印象中的数组总是比较复杂的东东。一个不错的例子:需要存储10个同学的姓名,使用数组即可简单解决,首先声明数组:

string[] friendNames = new string [arrayCount];
string[] friendNames = {"张三","李四","王五","谢六","陈七"};

第一行只初始化数组大小,可选 常数常量,初始化后,才可使用friendNames[0]的方式为数组元素赋值。第二行直接声明数组,并且初始化了数组的内容。

可使用for循环,配合friendNames.Length的大小,来访问数组值,注意第1个元素的位置是0。也可使用foreach,并且不担心超出数组范围。foreach与for的区别在于,foreach是只读访问。

foreach (string myStr in friendNames)
{Console.WriteLine(myStr);
}

多维数组分为矩形数组(多行的每行元素个数相同)、锯齿数组(多行的每行元素个数不同,并可能存在 {列1{行1{层1,层2},行2},列2...}),当然,同样可以使用foreach的方式,取出所有元素的内容,多嵌套一个foreach即可:

            int[][] jaggedIntArray = { new int[] { 1, 2, 3 }, new int[] { 4, 5 }, new int[] { 6, 7, 8, 9 }, new int[] {10, 11} };foreach(int[] topArray in jaggedIntArray){foreach (int bottomArray in topArray){Console.Write("{0} ", bottomArray);}Console.Write("\n");}

注意:这儿用的都是[]或{},没有用()的方式哈,不要总写错括号,很低级。

  • 字符串处理

这个就有意思多了。可以通过myString[1]的方式访问字符串中的每个字符,第1个字符位是0:

String myString = "  HeLlO WoRlD ";
char myChar = myString[1];

使用ToCharArray(),获取一个分解myString每个字符后的char数组:

char[] myChars = myString.ToCharArray();

还可以使用myString.Length获取字符串的数量,使用myString.ToLower()转为大写,myString.ToUpper()转为小写。注意:ToLower()、ToUpper()并不会改变变量本身的值的大小写,还需要用myString = myString.ToLower()才能修改变量本身的值。

myString.Trim()可以去掉字符串前、后的空格,还有TrimStart()和TrimEnd(),分别去掉前面和后面的空格。还可以使用Trim(myChar[])的方式,指定去除前后的内容不限于空格(char[] myChar = {' ','s'}):

            myString = "  sfrost/110110200010101100-13090909880 ";char mykg = ' ';char[] myxhx = {'-','/'};String[] myStrings = myString.Trim(mykg).Split(myxhx);Console.WriteLine("myStrings[0] = {0}", myStrings[0]);Console.WriteLine("myStrings[1] = {0}", myStrings[1]);Console.WriteLine("myStrings[2] = {0}", myStrings[2]);

最近刚好在搞微信开发,在C#中,上面这个例子,就可以实现以一个(些)关键字分解用户输入的个人信息。例子中使用的Split()方法,同样的可以使用char数组来指明分解的标识。强调一下,Split分解字符串的位置可以是多个不同标记的位置。

  • 结语

从这章开始,很多内容都可以马上做一些小的课题了,呵呵。不管是枚举(同类型)、结构(成员不同类型)、数组(一维、矩形[二维]、锯齿[不规则多维])、以及字符串处理,还有枚举与普通变量之间的值如何转换,数组如何声明、初始化和访问等等。而字符串的处理就太有意思了,特别是split,还有replace,再应用char数组,可以说是锦上添花啊。

  • 附:习题案例

编写一个控制台应用程序,接收用户输入的字符串,将字符串的顺序以输入时相反的方向输出:

            Console.WriteLine("请输入需要交换位置的字符串:");String myString = Console.ReadLine().Trim();Console.WriteLine("{0}", myString.Length);String tmpStr = "";for (int i = myString.Length; i > 0; i--){tmpStr += myString[i-1];}Console.WriteLine(tmpStr);

编写一个控制台应用程序,接收用户输入的字符串,用yes替换字符串中的所有no:

            Console.WriteLine("请输入带有no的字符串:");myString = Console.ReadLine().ToLower().Trim();Console.WriteLine("用 yes 替换掉 {0} 中的 no 后:{1}", myString, myString.Replace("no", "yes"));

编写一个控制台应用程序,给字符串的每个单词加上引号(我以为,单词间肯定有空格):

            Console.WriteLine("请输入带有空格的单词:");String myWord = Console.ReadLine().Trim();String[] myWords = myWord.Split(' ');myWord = "";foreach(String tmpWord in myWords){myWord += "\"" + tmpWord + "\" ";}Console.WriteLine("添加引号后的句子:{0}", myWord);

转载于:https://www.cnblogs.com/sfrost/p/3661522.html

02-C#入门(枚举、结构等)相关推荐

  1. [Go语言入门] 02 Go语言程序结构

    文章目录 02 Go语言程序结构 2.1 Go语言的一些基本概念 2.2 go源文件的代码结构 2.3 Go项目的基本文件结构 2.4 实战:创建一个模块 2.5 实战:从另一个模块调用刚创建的模块 ...

  2. MyBatis-学习笔记02【02.Mybatis入门案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  3. 02前端入门HTML5 +CSS3+电商网页制作:CSS

    02前端入门HTML5 +CSS3+电商网页制作 0 来源 1 CSS基础 1.1 基础认识 1.1.1 css demo 1.1.1 css的层叠性 1.2 CSS引入方式 1.3 选择器 1.4 ...

  4. c语言 字符串 枚举类型,C语言入门 — 枚举类型

    1.C语言入门 - 枚举类型,枚举类型的关键字是enum, enum是用来定义一组整型数值,其实定义模型如下: enum { 常数名称1 = 0, //起始值取0,这里的值可以为0,正数,负数. 常数 ...

  5. 基于IDEA搭建JavaWeb入门项目结构(2021版)

    前言:对于很多从eclipse等IDE迁移到IDEA开发工具的小伙伴,对于如何在IDEA上创建JavaWeb入门项目结构不太了解.或者即使创建成功也能勉强使用也不知其所以然.针对于此,写该篇博客予以总 ...

  6. C#学习笔记_12_枚举结构体

    12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch c ...

  7. c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体

    枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...

  8. 《算法笔记》2.3小节——C/C++快速入门-选择结构

    <算法笔记>2.3小节--C/C++快速入门->选择结构 Contest100000567 - <算法笔记>2.3小节--C/C++快速入门->选择结构 Conte ...

  9. C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例

    C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...

  10. c语言用if语句abc输出最大值,C语言基础入门选择结构-if语句(78页)-原创力文档...

    C语言基础入门选择结构-if语句_电脑基础知识_IT/计算机_专业资料.第9单元选择结构-if语句<程序设计基础>北京八维研修学院第1节选择结构导入?... <程序设计基础> ...

最新文章

  1. idea修改新的git提交地址
  2. 设计模式的Java 8 Lambda表达式-策略设计模式
  3. 企业实战(Jenkins+GitLab+SonarQube)_02_Jenkins运行
  4. 3.2 选择最可能的句子
  5. ffmpeg常用命令(windows)
  6. 路由重分布 rip,eigrp,和ospf
  7. 软件技术雷达Java
  8. 智能机器人比巴和智伴哪个好_毛爸聊玩具:金鹰卡通出品的麦咭机器人,白送我都不要...
  9. 为什么说EBC是提升企业“数治”水平的最优解
  10. 什么是正价元素和负价元素??
  11. 04、HTMLCSS-盒子模型
  12. JAVA设计模式总结之六大设计原则(一)
  13. Excel打印时完整显示合并的单元格区域
  14. MATLAB画双纵轴曲线。
  15. python 输出结果乱码解决方法——res.encoding=‘utf-8‘
  16. chatgpt可以降重论文吗-chatgpt降重论文软件
  17. Java基于springboot+vue的眼镜销售购物商城系统 element 前后端分离
  18. adb 连接无线手机安装 apk
  19. python正则表达式基础学习(一)
  20. python手机怎么下载软件_python利器app下载-python利器手机版 _5577安卓网

热门文章

  1. 江苏机器人竞赛南航_挑战不止 热血不息!1000余名青少年决战江苏省机器人普及大赛!...
  2. 浅谈html的语义化和一些简单优化,浅谈HTML的语义化和一些简单优化
  3. php目录隔离,PHP 应用隔离的几种方法
  4. json转java代码_Java代码:javabean和json互转
  5. 安卓判断服务器返回的状态码,关于服务器返回的十四种常见HTTP状态码详解
  6. 计算机循环语句for,计算机for循环语句相关知识.doc
  7. 计算机操作员技术工作总结,计算机操作员工作总结
  8. jquery post java对象_jquery $.post()返回数据
  9. linux下tar gz bz2 tgz z等众多压缩文件的解压方法
  10. Linux中find用法整理