第二讲:内存中的数据(二)
作者:互联网
【虽然是在编写教程,不知道是不是有人愿意阅读,不过俺还是强烈建议你不要学习C#,学习python更好,容易偏孩子钱,也好找工作,学java看起来就高大尚。虽然C#可以写出极好的软件,那有什么用呢?吾爱破解 或 淘宝 的一些人渣,没有真本事,偷鸡摸狗的本领很不得了,分分钟就给你破解了,极低的价格卖盗版或改版。所以,请不要学习编程了,至少不要把编程当做职业。】
数据多了,需要用好的方式存起来,以后要高效利用撒。
一般的教材都会讲解“数组”。数组这个东西如同孙悟空给唐僧画的“圈”,其实用处有限,以后再学。
数据的运算,如加减乘除,不需要单独学习,后面结合实际应用很快能体会并利用,所以呢,也不讲。
俺编程的时候,用得最多的数据(内存)存储方式是“列表”与“哈希表”。几乎是“无哈希,不编程”的地步。这节课先学习“列表”。
一、列表基础
(1)列表就是一个班的同学在一起。先建一个班。
// (1)先得创建一个“班”: List<string> classmates = new List<string>();
(2)添加同学信息
//(2)把你自己 及更多的同学 加入这个班,这个和排队做核酸检测一样,不带插队的: // 第1位同学,自己?序号为0哦。 classmates.Add("白菜"); // 第2位同学,序号为1哦。下同... classmates.Add("花菜"); // 第3位同学 classmates.Add("菜花"); // 第4位同学 classmates.Add("大白菜"); // 第5位同学 classmates.Add("小白菜"); // 第6位同学 classmates.Add("油菜"); // 第7位同学 classmates.Add("菜菜"); // 第8位同学 classmates.Add("菜头");
(3)数数有几个人了?
//(3)数数有多少人 ? int num = classmates.Count();
(4)列表元素的使用
//(4)列表元素的使用 // 目的:获得第3同学的名字 // 说明:C/C++/C#/Java等很多语言都是从0开始计数的,称为“下标”; // 因此,第3位同学的序号,便是2; string who = classmates[2];
(5)不喜欢第4个名字?改之。
//(5)不喜欢第4个名字?改之无妨。 classmates[3] = "榨菜";
(6)第7位同学退学了?删之。
//(6)第7位同学退学了?删除之。 classmates.RemoveAt(6);
(7)来了一位豪横的哥们,非成为第2位!据说土星来的,安排!
//(7)来了一位豪横的哥们,非成为第2位!据说土星来的,安排! classmates.Insert(1, "面瓜");
以上介绍一些基本的数据操作方式。
二、数据的体现
各位看官说了,列表看起来还不错啊,怎么能直观地看到列表的这些操作呢?
这件事以后经常要做,所以呢,需要一些独立的“函数”。每个函数就是一个洗衣机上的功能键。咱们这次一下写2个。
/// <summary> /// 用表格形式显示班级信息 /// 先用着,不明白没关系。 /// </summary> /// <param name="list">保存班级信息的列表</param> /// <returns></returns> private string List2Table(string title, List<string> list) { StringBuilder sb = new StringBuilder(); sb.AppendLine("<center>"); sb.AppendLine("<font color=red>" + title + "</font><br>"); sb.AppendLine("<h2>蔬菜班名录</h2>"); sb.AppendLine("(本班共有" + list.Count() + "位同学)<br>"); sb.AppendLine("<table width='640' border=1>"); sb.AppendLine("<tr><td>序号</td><td>姓名</td></tr>"); int index = 0; foreach (string su in list) { sb.AppendLine("<tr><td>" + index + "</td><td>" + su + "</td></tr>"); index = index + 1; } sb.AppendLine("</table>"); sb.AppendLine("</center>"); sb.AppendLine("<br>"); sb.AppendLine("<br>"); return sb.ToString(); }
这个函数的功能是将列表,按表格方式显示在 浏览器上。
/// <summary> /// 用列表形式显示班级信息 /// 先用着,不明白没关系。 /// </summary> /// <param name="list"></param> /// <returns></returns> private string List2Links(string title, List<string> list) { StringBuilder sb = new StringBuilder(); sb.AppendLine("<center>"); sb.AppendLine("<font color=red>" + title + "</font><br>"); sb.AppendLine("<h2>蔬菜班名录</h2>"); sb.AppendLine("(本班共有" + list.Count() + "位同学)<br>"); int index = 0; foreach (string su in list) { sb.AppendLine("<div style='width:120px;height:40px;border:solid 1px #666666;text-align:center;'>" + index + ":" + su + "</div>"); sb.AppendLine("↓<br>"); index = index + 1; } sb.AppendLine("</center>"); sb.AppendLine("<br>"); sb.AppendLine("<br>"); return sb.ToString(); }
这个函数的功能是按 列表 形态,显示在浏览器上。
三、组合成软件
上面的代码介绍了数据的保存,算法是增加、删除、修改等等。咱们将这些代码组合起来,就可以看到运行效果了。
首先与第一讲一样,创建一个 button1 与 webbrowser1:
双击 button1 ,并拷贝下面的代码,使之成为:
private void button1_Click(object sender, EventArgs e) { // (1)先得创建一个“班”: List<string> classmates = new List<string>(); //(2)把你自己 及更多的同学 加入这个班,这个和排队做核酸检测一样,不带插队的: // 第1位同学,自己?序号为0哦。 classmates.Add("白菜"); // 第2位同学,序号为1哦。下同... classmates.Add("花菜"); // 第3位同学 classmates.Add("菜花"); // 第4位同学 classmates.Add("大白菜"); // 第5位同学 classmates.Add("小白菜"); // 第6位同学 classmates.Add("油菜"); // 第7位同学 classmates.Add("菜菜"); // 第8位同学 classmates.Add("菜头"); // 调用函数,显示现在的名录; // 用函数的返回值组成页面内容; string html = List2Table("原始信息", classmates); //(3)数数有多少人 ? int num = classmates.Count(); //(4)列表元素的使用 // 目的:获得第3同学的名字 // 说明:C/C++/C#/Java等很多语言都是从0开始计数的,称为“下标”; // 因此,第3位同学的序号,便是2; string who = classmates[2]; //(5)不喜欢第4个名字?改之无妨。 classmates[3] = "榨菜"; // 调用函数,显示现在的名录 html = html + List2Links("修改第4位同学的名字后", classmates); //(6)第7位同学退学了?删除之。 classmates.RemoveAt(6); // 调用函数,显示现在的名录 html = html + List2Links("第6位同学退学了", classmates); //(7)来了一位豪横的哥们,非成为第2位!据说土星来的,安排! classmates.Insert(1, "面瓜"); // 调用函数,显示现在的名录 html = html + List2Table("来了新同学", classmates); // 最后真正显示页面(含上面每次操作的结果) webBrowser1.DocumentText = html; }
前面的两个函数,复制后写在 button1_Click 之后。完整的 Form1.cs 代码是(对照比较之用,不要复制哦):
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // (1)先得创建一个“班”: List<string> classmates = new List<string>(); //(2)把你自己 及更多的同学 加入这个班,这个和排队做核酸检测一样,不带插队的: // 第1位同学,自己?序号为0哦。 classmates.Add("白菜"); // 第2位同学,序号为1哦。下同... classmates.Add("花菜"); // 第3位同学 classmates.Add("菜花"); // 第4位同学 classmates.Add("大白菜"); // 第5位同学 classmates.Add("小白菜"); // 第6位同学 classmates.Add("油菜"); // 第7位同学 classmates.Add("菜菜"); // 第8位同学 classmates.Add("菜头"); // 调用函数,显示现在的名录; // 用函数的返回值组成页面内容; string html = List2Table("原始信息", classmates); //(3)数数有多少人 ? int num = classmates.Count(); //(4)列表元素的使用 // 目的:获得第3同学的名字 // 说明:C/C++/C#/Java等很多语言都是从0开始计数的,称为“下标”; // 因此,第3位同学的序号,便是2; string who = classmates[2]; //(5)不喜欢第4个名字?改之无妨。 classmates[3] = "榨菜"; // 调用函数,显示现在的名录 html = html + List2Links("修改第4位同学的名字后", classmates); //(6)第7位同学退学了?删除之。 classmates.RemoveAt(6); // 调用函数,显示现在的名录 html = html + List2Links("第6位同学退学了", classmates); //(7)来了一位豪横的哥们,非成为第2位!据说土星来的,安排! classmates.Insert(1, "面瓜"); // 调用函数,显示现在的名录 html = html + List2Table("来了新同学", classmates); // 最后真正显示页面(含上面每次操作的结果) webBrowser1.DocumentText = html; } /// <summary> /// 用表格形式显示班级信息 /// 先用着,不明白没关系。 /// </summary> /// <param name="list">保存班级信息的列表</param> /// <returns></returns> private string List2Table(string title, List<string> list) { StringBuilder sb = new StringBuilder(); sb.AppendLine("<center>"); sb.AppendLine("<font color=red>" + title + "</font><br>"); sb.AppendLine("<h2>蔬菜班名录</h2>"); sb.AppendLine("(本班共有" + list.Count() + "位同学)<br>"); sb.AppendLine("<table width='640' border=1>"); sb.AppendLine("<tr><td>序号</td><td>姓名</td></tr>"); int index = 0; foreach (string su in list) { sb.AppendLine("<tr><td>" + index + "</td><td>" + su + "</td></tr>"); index = index + 1; } sb.AppendLine("</table>"); sb.AppendLine("</center>"); sb.AppendLine("<br>"); sb.AppendLine("<br>"); return sb.ToString(); } /// <summary> /// 用列表形式显示班级信息 /// 先用着,不明白没关系。 /// </summary> /// <param name="list"></param> /// <returns></returns> private string List2Links(string title, List<string> list) { StringBuilder sb = new StringBuilder(); sb.AppendLine("<center>"); sb.AppendLine("<font color=red>" + title + "</font><br>"); sb.AppendLine("<h2>蔬菜班名录</h2>"); sb.AppendLine("(本班共有" + list.Count() + "位同学)<br>"); int index = 0; foreach (string su in list) { sb.AppendLine("<div style='width:120px;height:40px;border:solid 1px #666666;text-align:center;'>" + index + ":" + su + "</div>"); sb.AppendLine("↓<br>"); index = index + 1; } sb.AppendLine("</center>"); sb.AppendLine("<br>"); sb.AppendLine("<br>"); return sb.ToString(); } } }
保存!运行!OK!
你的第一个软件,算是写出来了。
标签:同学,classmates,string,第二,AppendLine,Add,内存,sb,数据 来源: https://www.cnblogs.com/bufu/p/14394418.html