一、索引器
二、單例模式:只能創建一個對象的類
語法實現步驟:
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();
然後重新保存即可