系统相关
首页 > 系统相关> > 第二讲:内存中的数据(二)

第二讲:内存中的数据(二)

作者:互联网

【虽然是在编写教程,不知道是不是有人愿意阅读,不过俺还是强烈建议你不要学习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