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)、使用委托来实现窗体传值。

最新文章

  1. 免费领取百度云盘2048G永久空间,永久离线下载特权
  2. 浅析Java.lang.ProcessBuilder类
  3. java 面试每日一题2
  4. 微软职位内部推荐-Software Engineer II-SDP
  5. POJ 2594 Treasure Exploration (可相交最小路径覆盖)
  6. Bootstrap-select:美化原生select
  7. MYSQL中delete删除多表数据
  8. 设置COOKIE过期时间的方法
  9. asp.net mvc 的几种分页Pager
  10. MFC的规则DLL与扩展DLL
  11. Hex、bin、axf、elf格式文件小结
  12. 如何重载浏览器 onload 事件后加载的资源文件
  13. 【 D3.js 进阶系列 — 1.1 】 其它表格文件的读取
  14. day25 Python四个可以实现自省的函数,反射
  15. web 架构 /http协议,状态码,django中常用命令
  16. 关于Java大数操作(BigInteger、BigDecimal)
  17. 37.Linux驱动调试-根据oops的栈信息,确定函数调用过程
  18. 跟我学SharePoint2013视频培训课程——设置列表名称、描述、导航等基本信息(12)
  19. Oracle中的日期处理方法
  20. 【HNOI2008】玩具装箱

热门文章

  1. 31_java之项目中的数据库操作
  2. jsp 学习 第2步 - tag 使用
  3. 「小程序JAVA实战」小程序的留言和评价功能(70)
  4. 37.使用PreResultListener实现回调
  5. eclipse或tomcat web项目启动失败其中一种解决办法
  6. MVC知识记录
  7. Financial Information Exchange (FIX) Protocol Interview Questions Answers[z]
  8. 简单拼接图像的tile_images和tile_images_offset算子
  9. js日期格式化 扩展Date()
  10. yarn 完美替代 npm