zoukankan      html  css  js  c++  java
  • C#基础笔记(第二十二天)

    1.单例模式
    1)将构造函数私有化
    2)提供一个静态方法,返回一个对象
    3)创建一个单例

    2.XML可扩展的标记语言 HTML
    XML:存储数据
    不是单独.net的东西,是一个单独的,JAVA什么的都也用
    不需要背标签,要什么随便写
    注意:XML是严格区分大小写的
    XML标签也是成对出现的
    XML有且只有一个根节点
    节点:一个一个的标签就是节点
    元素:所有内容都是元素

    需要添加标签的时候用innerXml
    添加文本的时候用innerText

    //通过代码来创建XML文档
    //1.引用命名空间
    //2.创建XML文档对象
    XmlDocument doc = new XmlDocument();
    //3.创建第一行描述信息,并且添加到doc文档中
    XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
    doc.AppendChild(dec);
    //4.创建根节点
    XmlElement books= doc.CreateElement("Books");
    //将根节点添加到文档中
    doc.AppendChild(books);

    //5.给根节点Books创建子节点
    XmlElement book1= doc.CreateElement("Book");
    //将book添加到根节点
    books.AppendChild(book1);
    //6.给book1添加子节点
    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 book2 = doc.CreateElement("BOOK");
    books.AppendChild(book2);

    XmlElement name2 = doc.CreateElement("Name");
    name2.InnerText = "金梅";
    book2.AppendChild(name2);

    XmlElement price2 = doc.CreateElement("Price");
    price2.InnerText = "10";
    book2.AppendChild(price2);

    XmlElement des2 = doc.CreateElement("Des");
    des2.InnerText = "好看";
    book2.AppendChild(des2);

    doc.Save("Books,xml");
    Console.WriteLine("保存成功");
    ..............................................................................................................................................................
    XmlDocument doc = new XmlDocument();
    XmlDeclaration dec= doc.CreateXmlDeclaration("1.0","utf-8",null);
    doc.AppendChild(dec);

    XmlElement order = doc.CreateElement("Order");
    doc.AppendChild(order);

    XmlElement customerName = doc.CreateElement("CustomerName");
    customerName.InnerText = "刘洋";
    order.AppendChild(customerName);

    XmlElement customerNumber = doc.CreateElement("CustomerNumber");
    customerNumber.InnerText = "1000001";
    order.AppendChild(customerNumber);

    XmlElement items = doc.CreateElement("Items");
    order.AppendChild(items);

    XmlElement orderItem1 = doc.CreateElement("OrderItem");
    //给节点添加属性
    orderItem1.SetAttribute("Name", "充气娃娃");
    orderItem1.SetAttribute("Count", "10");
    items.AppendChild(orderItem1);

    XmlElement orderItem2 = doc.CreateElement("OrderItem");
    //给节点添加属性
    orderItem2.SetAttribute("Name", "充气娃娃");
    orderItem2.SetAttribute("Count", "10");
    items.AppendChild(orderItem2);

    XmlElement orderItem3 = doc.CreateElement("OrderItem");
    //给节点添加属性
    orderItem3.SetAttribute("Name", "充气娃娃");
    orderItem3.SetAttribute("Count", "10");
    items.AppendChild(orderItem3);

    doc.Save("Order.xml");
    Console.WriteLine("保存成功");
    Console.ReadKey();

    5.追加XML
    //追加XML文档
    XmlDocument doc = new XmlDocument();
    XmlElement books;
    if (File.Exists("Books.xml"))
    {
    //如果文件存在 加载XML
    doc.Load("Books.xml");
    //获得文件的根节点
    books= doc.DocumentElement;
    }
    else
    {
    //如果文件不存在
    //创建第一行
    XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
    doc.AppendChild(dec);
    //创建根节点
    books = doc.CreateElement("Books");
    doc.AppendChild(books);
    }
    6.读取XML
    XmlDocument doc = new XmlDocument();
    //加载要读取的XML
    doc.Load("Books.xml");
    //获取根节点
    XmlElement books = doc.DocumentElement;

    //获得子节点 返回节点的集合
    XmlNodeList xnl = books.ChildNodes;
    foreach (XmlNode item in xnl)
    {
    Console.WriteLine(item.InnerText);
    }
    Console.ReadKey();
    XmlElement book1 = doc.CreateElement("Book");
    books.AppendChild(book1);
    XmlElement name1 = doc.CreateElement("Name");
    name1.InnerText = "C#大全";
    book1.AppendChild(name1);
    XmlElement Price1 = doc.CreateElement("Price");
    Price1.InnerText = "110";
    book1.AppendChild(Price1);
    XmlElement des1 = doc.CreateElement("Des");
    des1.InnerText = "看不懂";
    book1.AppendChild(des1);

    doc.Save("Books.xml");
    Console.WriteLine("保存成功");
    Console.ReadKey();

    7.读取带属性的XML文档
    XmlDocument doc = new XmlDocument();
    doc.Load("Order.xml");
    XmlNodeList xnl= doc.SelectNodes("/Order/Items/OrderItem");
    foreach (XmlNode node in xnl)
    {
    Console.WriteLine(node.Attributes["Name"].Value);
    Console.WriteLine(node.Attributes["Count"].Value);
    }
    Console.ReadKey();

    8.删除XML的节点
    XmlDocument doc = new XmlDocument();
    doc.Load("Order.xml");
    XmlNode xn = doc.SelectSingleNode("/Order/Items");
    xn.RemoveAll();
    doc.Save("Order.xml");
    Console.WriteLine("删除成功");
    Console.ReadKey();

    9、委托
    1)、为什么要使用委托
    将一个方法作为参数传递给另一个方法。方法的类型就是委托类型
    1. //DelSayHi del = SayHiEnglish;
    2.//DelSayHi del = new DelSayHi(SayHiEnglish);
    //del("李四");
    3. //Test("张三", SayHiChinese);
    2)、委托概念
    声明一个委托类型
    委托所指向的函数必须跟委托具有相同的签名
    3)、匿名函数
    没有名字的函数
    当方法只执行一次的时候用匿名函数
    public delegate void DelSayHi(string name);
    DelSayHi del = delegate (string name)
    {
    Console.WriteLine("你好"+name);
    };
    del("张三");
    Console.ReadKey();

    //lamda表达式(匿名函数更为简写的一种方式) => goes to(滚向)
    4)、练习:使用委托求数组的最大值
    5)、练习:使用委托求任意数组的最大值
    6)、泛型委托
    public delegate int DelCompare<T>(T t1,T t2);
    7)、多播委托
    委托可以指向多个函数
    DelTest del = T1;
    del += T2;
    del += T3;
    del += T4;
    del();
    Console.ReadKey();
    8)、lamda表达式
    public delegate void DelSayHi(string name);
    DelSayHi del = (string name) => { Console.WriteLine("Nice to meet you" + name); };
    del("李四");
    Console.ReadKey();

    object result= GetMax(nums,(object o1, object o2) => { return o1.ToString().Length - o2.ToString().Length; });

    Lamda表达式是匿名函数更为简单的一种表达方法。
    DelOne del1 = delegate (){ }; 匿名函数
    DelOne del2 = ()=>{ }; Lamda表达式

    DelTwo del1 = delegate (string name) { }; 匿名函数
    DelTwo del2=(string name)=>{ }; Lamda表达式

    DelThree del1 = delegate (string name) { return name; }; 匿名函数
    DelThree del2 = (string name) => { return name; }; Lamda表达式

    List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    list.Remove(0);根据项目来移除
    list.RemoveAt(0);根据下标来移除
    list.RemoveRange(5, 3);根据下标移除一定范围的元素。
    list.RemoveAll(n => n > 4);移除n(n可以随便写),限定n的范围,如移除大于4的

    9)、使用委托来实现窗体传值。

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第4章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第3章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第1,2章 读书笔记(待更新)
    Tkinter的Message组件
    Git 实操/配置/实践
    mysq5.7.32-win安装步骤
    行为型模式之模板方法
    结构型模式之组合模式
    结构型模式之享元模式
    结构型模式之外观模式
  • 原文地址:https://www.cnblogs.com/VSMinos/p/7873498.html
Copyright © 2011-2022 走看看