C#基础进阶一 高级语法之索引器、单例模式、XML

本文详细介绍了单例模式的实现步骤以及如何使用XML进行数据存储,包括XML的特点、创建与读取XML文档的方法,以及如何进行XML的追加与删除操作。

一、索引器


二、单例模式:只能创建一个对象的类

语法实现步骤:

1、将构造函数私有化,private;

private Form2()
        {
            InitializeComponent();
        }

2、类内部创建一个静态该类对象的单例,初值为null;

public static Form2 frmSingle = null;

3、创建一个静态方法,判断单例是否为null,如是,新建一个对象并赋值给单例,返回该单例

public static Form2 GetSingle()
        {
            if (frmSingle == null)
            {
                frmSingle = new Form2();
            }
            return frmSingle;
        }

最后调用此类的静态方法即可取得此单例

orm2 frm2 = Form2.GetSingle();   //new Form2();
            frm2.Show();

 

三、XML :Extensible Markup Language  可扩展标记语言

HTML(超级文本标记语言)是用来显示数据的,而XML(可扩展标记语言)是用来存储数据的,小型数据库

特点:标签不固定,可以自由发挥;

与HTML一样标签也是成对出现,但是严格区分大小写,必须有一个并且只能有一个根节点

1、通过新建XML文件,手写进去:

<?xml version="1.0" encoding="utf-8" ?>

<Books>
  
  <Book>
    <Name>冰与火之歌</Name>
    <Price>10</Price>
    <Des>权利的游戏</Des>
  </Book>

  <Book>
    <Name>三国演义</Name>
    <Price>50</Price>
    <Des>三国鼎立</Des>
  </Book>
  
</Books>

 

2、通过代码创建XML文档

1)引入命名空间:---using System.Xml;

2)创建XML文档对象

XmlDocument doc = new XmlDocument();

3)添加第一行描述信息

XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
            doc.AppendChild(dec);


4)添加根节点

XmlElement books =  doc.CreateElement("Books");
            doc.AppendChild(books);


5)给根节点添加子节点

XmlElement book1 = doc.CreateElement("Book");
            books.AppendChild(book1);
            XmlElement book2 = doc.CreateElement("Book");
            books.AppendChild(book2);

6)给子节点添加信息节点

XmlElement name1 =  doc.CreateElement("Name");
            name1.InnerText = "冰与火之歌";
            book1.AppendChild(name1);
            XmlElement price1 = doc.CreateElement("Price");
            price1.InnerText = "10";
            book1.AppendChild(price1);
            XmlElement des1 = doc.CreateElement("Des");
            des1.InnerText = "权利的游戏";
            book1.AppendChild(des1);

            XmlElement name2 = doc.CreateElement("Name");
            name2.InnerText = "三国演义";
            book2.AppendChild(name2);
            XmlElement price2 = doc.CreateElement("Price");
            price2.InnerText = "50";
            book2.AppendChild(price2);
            XmlElement des2 = doc.CreateElement("Des");
            des2.InnerText = "三国鼎立";
            book2.AppendChild(des2);

7)保存XML文档

doc.Save("Books.xml");

 

8)带属性的XML

XmlElement orderItem1 = doc.CreateElement("OrderItem"); //子节点1
            //给节点添加属性
            orderItem1.SetAttribute("Name", "码表");
            orderItem1.SetAttribute("Count", "40");
            item.AppendChild(orderItem1);

9)添加内容时有两种,当需要添加标签时用

name.InnerXml = "<p>我是一个p标签</p>"; 

当只是存文本内容时,最好用 Text

number.InnerText = "我是一个p标签";

 

3、追加XML

也是要先引入命名空间,创建XML文档对象,然后开始判断是否存在要追加的文件

if(File.Exists("Books.xml"))

声明一个根节点:XmlElement books;

1)如果存在:

加载文档,并获取XML文档的根节点

//如存在,加载该文档
                doc.Load("Books.xml");
                //获取文档的根节点
                books = doc.DocumentElement;

然后在根节点中追加子节点

2)如不存在,添加第一行描述信息,添加根节点,与创建XML文档相同

XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
                doc.AppendChild(dec);
                books = doc.CreateElement("Books");
                doc.AppendChild(books);

3)判断完成后,将要追加的内容追加到根节点中

同创建XML中的添加子节点

 

4、读取XML

1)也是要创建一个XML对象,加载要读取的XML,然后获取根节点

XmlDocument doc = new XmlDocument();
            //加载要读取的xml文档
            doc.Load("Books.xml");
            //获取XML的根节点
            XmlElement books = doc.DocumentElement;

2)然后根据根节点获取所有子节点,返回一个节点列表集合

XmlNodeList xnl = books.ChildNodes;


3)遍历集合就能得到每一项节点的值

foreach (XmlNode item in xnl)
            {
                Console.WriteLine(item.InnerText);
            }

 

5、读取带属性的XML

1)同以上加载XML

2)获得某一节点下的所有子节点列表结合

XmlNodeList xnl = doc.SelectNodes("/Order/Items/OrderItem"); //获得某一个节点下所包含的所有子节点

3)遍历集合,得到每一个子节点中的属性

foreach (XmlNode node in xnl)
            {
                Console.WriteLine(node.Attributes["Name"].Value);
                Console.WriteLine(node.Attributes["Count"].Value);
            }

4) 可以改变属性的值:

//获取该节点
            XmlNode xn = doc.SelectSingleNode("/Order/Items/OrderItem[@Name='码农']");
            xn.Attributes["Name"].Value = "改变后的Name"; //改变该节点Name属性的值
            xn.Attributes["Count"].Value = "100";   //改变该节点Count属性的值
            doc.Save("Order.xml");  //重新保存XML文档

 

6、删除XML中的节点

1、同上加载要删除的XML

2、获得要删除的节点的父节点

XmlNode xn = doc.SelectSingleNode("/Order/Items"); //获取要删除的节点的父节点


3、删除此节点下的所有节点:

xn.RemoveAll();

然后重新保存即可

 







MATLAB代码实现了个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归化:使用mapminmax将输入和输出归化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值