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)、使用委托来实现窗体传值。
C#基础笔记(第二十二天)的更多相关文章
- C#基础笔记(第十二天)
		
1.复习里氏转换:1).子类可以赋值给父类(如果有一个方法需要一个父类作为参数,我们可以传第一个子类对象)2).如果父类中装的是子类对象,则可以将这个父类强转为子类对象 is和as判断转换成功失败 P ...
 - 孤荷凌寒自学python第二十二天python类的继承
		
孤荷凌寒自学python第二十二天python类的继承 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自 ...
 - php代码审计基础笔记
		
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
 - javaSE第二十二天
		
第二十二天 312 1:登录注册IO版本案例(掌握) 312 2:数据操作流(操作基本类型数据的流)(理解) 313 (1)定义: 313 (2)流对象名称 313 (3 ...
 - Android群英传笔记——第二章:Android开发工具新接触
		
Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...
 - C#面试题(转载)  SQL Server 数据库基础笔记分享(下)  SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器  C#语法——泛型的多种应用
		
C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备) https://blog.csdn.net/u013519551/article/details/51220841 1. . ...
 - C#基础笔记(第十天)
		
C#基础笔记(第十天) 1.字段.属性.方法.构造函数字段:存储数据属性:保护字段,对字段的取值和设值进行限定方法:描述对象的行为构造函数:初始化对象(给对象的每个属性依次的赋值)类中成员,如果不加访 ...
 - The Road to learn React书籍学习笔记(第二章)
		
The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...
 - JavaScript基础笔记集合(转)
		
JavaScript基础笔记集合 JavaScript基础笔记集合 js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译 js存放的位置 html脚本必须放在&l ...
 
随机推荐
- Nginx实战入门教程
			
Nginx 简介 Nginx是一个高性能的http和反向代理服务器,它看起来好像不太符合英文单词的拼写习惯,因为Nginx是由名为 伊戈尔·赛索耶夫 的俄罗斯人开发的.Nginx主要特点为占用内存小, ...
 - django-model的元类Meta
			
Meta类存在model类里面 模型元选项 文档有更多Meta类的配置属性: English:https://docs.djangoproject.com/en/1.11/ref/models/opt ...
 - django-常用过滤器
			
django常用过滤器 add :字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串. default:提供一个默认值,在这个值被django认为是False的时候使用.比如:空字符串.N ...
 - python学习-day 1
			
Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...
 - leetcode563
			
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
 - chrome36可以使用自定义元素的回调了
			
<!DOCTYPE html> <html> <head> <title>ms-attr-*</title> <meta charse ...
 - k8s 1.10 关于rbac的坑
			
apiserver 启动加上--authorization-mode=RBAC 开启rbac 会生成默认role,最高权限位cluster-admin的cluster role 再关闭rbac(不加 ...
 - manjaro i3 配置笔记
			
更改国内源 sudo pacman-mirrors -GB testing -c China 增加Arch linuxcn源 在/etc/pacman.conf文件末尾添加两行: [archlinux ...
 - OGNL概述
			
-------------------siwuxie095 OGNL 概述 1.OGNL 即 Object-Graph Navigation Language,对象图导航语言, 它是一个应用于 Jav ...
 - Visual Studio 2010 常用快捷方式
			
调试快捷键 F6: 生成解决方案 Ctrl+F6: 生成当前项目 F7: 查看代码 Shift+F7: 查看窗体设计器 F5: 启动调 ...