一、深入.NET框架
1..NET框架具有兩個組件:CLR(公共語言運行時)和FCL(框架類庫),CLR是.NET框架的基礎
2.框架核心類庫:
System.Collections.Generic:泛型操作
System.IO:IO流操作
System.Net:網絡編程
System.Data:ADO.NET結構的類的訪問
System.Windows.Forms:窗體操作
System.Drawing:圖形操作
二、深入C#數據類型
1.結構體:結構體是由struct修飾的類,結構體是值類型(枚舉也是值類型)
public struct Student
{
}
2.拆箱和裝箱:
裝箱:就是把值類型轉換為引用類型
object o=1;
拆箱:就是把引用類型轉換為值類型
int num=(int)o;
3.值傳遞和引用傳遞(有無ref修飾)
a.有ref修飾時,修改的值會永久保留
b.無ref修飾時,是值類型的,修改的值不會永久保留
c.無ref修飾時,是引用類型的,修改的值會永久保留
三、泛型集合
1.集合的概念:
集合就是將一堆數據類型的數據放在一起的一種容器,和數組是很相似的東西。
2.集合的分類以及聲明方法
a.集合分為非泛型和泛型集合,非泛型又分單列(ArrayList)和雙列(Hashtable),泛型也分單列(List<T>)和雙列(Dictionary<K,V>)。
單列的T數據類型可以為object類型,雙列的K,V也可以是object類型
b.集合的聲明
ArrayList list=new ArrayList();
Hashtable list=new Hashtable();
List<T> list=new List<T>();
Dictionary<K,V> list=new Dictionary<K,V>();
3.集合的方法和屬性
1.Add(),增加數據的方法
2.Remove(),刪除數據的方法,()裡填的是一整條的數據,單列集合的刪除,集合會去自動維護數據,這樣集合不會出現某個索引的值是為空的
3.RemoveAt(),同樣也是刪除數據的方法,()裡填的是索引(單列)雙列沒有RemoveAt()方法,
4.Clear(),清空集合的所有數據
5.Count屬性,可以得到集合有幾條數據
6.Capacity屬性,集合的容量,集合的容量是成倍(二倍)的增加的,Count為0時,Capacity為0,Count為1時,Capacity為4
7.Contains(),單列集合用來判斷某個數據是否存在
8.ContainsKey(),雙列判斷是否存在某個Key值
9.ContainsValue(),雙列判斷是否存在某個Value值
4.集合的遍歷方法
HashTable和Dictionary遍歷不同就是,遍歷值類型的時候,HashTable需要進行類型轉換(拆箱,裝箱)
HashTable:
(1).通過Key值遍歷 foreach (string item in list.Keys) { Console.WriteLine(list[item]); }
(2).通過value值遍歷 foreach (Student item in list.Values) { Console.WriteLine((Student)item.Name); }
(3).通過整體的雙列集合遍歷 foreach (DictionaryEntry item in list) { Console.WriteLine(item.Key); Console.WriteLine(((Student)item.Value).Name); }
Dictionary:
(1).通過Key值遍歷 foreach (string item in list.Keys) { Console.WriteLine(list[item]); }
(2).通過value值遍歷 foreach (Student item in list.Values) { Console.WriteLine(item.Name); }
(3).通過整體遍歷 foreach (KeyValuePair<T,V> item in list) { Console.WriteLine(item.Key); Console.WriteLine((item.Value).Name); }
四、深入類的方法
1.方法重載:通過傳的參數的不同從而調用不同的方法,方法名相同,參數類型不同,參數順序不同,參數個數不同,和返回值無關
參數類型不同:
public void Play(int num){};
public void Play(string name){};
參數順序不同:
public void Play(int num,int age){};
public void Play(int age,int num){};
參數個數不同:
public void Play(int num){};
public void Play(string name,int num){};
和返回值無關:
public string Play(int num){};
public int Play(int num){};
2.類的構造:和類名相同,無返回值
無參構造:
public class Student
{
public Student(){};
}
帶參構造:有帶參構造,必須寫出類的無參構造
public class Student
{
public string Name { get; set; }
public Student(){};
public Student(string name){this.Name=name};
}
3.對象間的交互
一個電視類:
public class Tv
{
public void Play(){};
}
一個電視工具類
public class TvTool
{
public void Play()
{
Tv t=new Tv();
t.Play();
};
}
主程序中:
TvTool tool=new TvTool();
tool.Play();
從而只有控制一個類去控制別的類
五、繼承和多態
1.繼承:子類繼承父類,子類便可以使用父類的屬性和方法,繼承用“:”(冒號)實現繼承
父類:
public class Man
{
int age;
string name;
public void Say()
{
};
}
子類:
public class Student:Man
{
public void Play()
{
方法裡便可以使用父類的屬性和方法
age=1;
name="張三";
Say();
};
}
2.虛方法實現多態:通過子類重新父類的方法,實現多態,從而一個方法實現不同效果
父類:
public class Man
{
public virtual void Say()
{
}
}
子類:
public class Student:Man
{
public override void Play()
{
我是一個學生
}
}
public class Super:Man
{
public override void Play()
{
我是一個超人
}
}
六、深入多態
1.裡氏原則:父類實力化子類不會影響程序
2. is 和 as
is操作符用於檢查對象和指定的類型
as操作符用於兩個對象之間的類型轉換
3.抽象類實現多態
父類:
public abstract class Man
{
public abstract void Say()
{
}
public void Play(){}
抽象類可以有普通方法
}
子類:
public class Student:Man
{
public override void Play()
{
我是一個學生
}
}
public class Super:Man
{
public override void Play()
{
我是一個超人
}
}
七、Xml操作
1.Xml解析
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode root = doc.DocumentElement;
foreach (XmlNode item in root.ChildNodes)
{
switch (item.Name)
{
case "Name":
movieName = item.InnerText;
m.MovieName = movieName;
break;
case "Poster":
playBill = item.InnerText;
m.Poster = playBill;
break;
}
可以將Xml數據放在集合中
也可以通過索引器進行解析到Xml數據
2.關於XmlNode對象的屬性
InnerText:當前節點的值
Name:當前節點的名稱
ChildNodes:當前節點的所有子節點
3.treeView綁定節點
TreeNode tn = new TreeNode(item);
tn.Tag = Schedule.Items[item].Movie;
Treeview.Nodes.Add(tn);
八、文件操作
1.讀寫文件
寫:
FileStream fs=new FileStream(path,FileMode.Create);
StreamWriter sw=new StreamWriter(fs);
sw.Writer(需要些的文本);
sw.Close(); 後開的先關流
fs.Close();
讀:
FileStream fs=new FileStream(path,FileMode.Open);
StreamWriter sw=new StreamWriter(fs,Ending.Default);
String txt=sw.ReadToEnd();
sw.Close();
fs.Close();
2.相關屬性
Exists:潘判斷是否存在
Extension:後綴名
Naem:文件名
FullName:文件地址