C#學習筆記3
阿新 • • 發佈:2018-11-26
C#多型性
靜態多型性:
-
函式過載
C#函式過載與Java類似,可以是引數列表中的引數型別不同,也可以是引數個數不同。- 運算子過載:
可以重新定義或過載C#中內建的運算子,也可以使用使用者自定義型別的運算子。過載運算子是具有特殊名稱的函式,是通過關鍵字operator後跟運算子的符號來定義的。過載運算子有返回型別和引數列表。
- 運算子過載:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OperatorOverloading { class Opreator { private int length; public int Length { get { return length; } set { length = value; } } private int breadth; public int Breadth { get { return breadth; } set { breadth = value; } } private int height; public int Height { get { return height; } set { height = value; } } public int getVolume() { return length * breadth * height; } public static Opreator operator+ (Opreator o1, Opreator o2) { Opreator o3=new Opreator(); o3.Height = o1.height + o2.height; o3.Length = o1.length + o2.length; o3.Breadth = o1.breadth + o2.breadth; return o3; } static void Main(string[] args) { Opreator o1 = new Opreator(); Opreator o2 = new Opreator(); Opreator o3 = new Opreator(); o1.Breadth = 3; o1.Height = 3; o1.Length = 3; o2.Length = 2; o2.Height = 2; o2.Breadth = 2; o3 = o2 + o1; int vol = o3.getVolume(); Console.WriteLine("{0}",vol); Console.ReadKey(); } } }
- 運算子過載
動態多型性:
-
抽象類
C#允許使用abstract建立抽象類,用於提供介面的部分類的實現。當一個派生類繼承自該抽象類時,實現即完成。抽象類包含抽象方法,抽象方法可被派生類實現。派生類具有更專業的功能。1. 抽象類不能建立例項 2. 不能在抽象類外部宣告一個抽象方法 3. 通過在類定義前面放置關鍵字sealed,可以將類宣告為密封類。當一個類被宣告為sealed時,它不能被繼承。抽象類不能被宣告為sealed。
-
虛方法:
當有一個定義在類中的函式需要在繼承類中實現時,可以使用虛方法。虛方法使用關鍵字virtual宣告。虛方法可以在不同的繼承類中有不同的實現。對虛方法的呼叫是在執行時發生的。
C#介面:
C#介面與Java類似,使用interface關鍵字宣告,介面宣告預設是public的。
C#前處理器指令:
前處理器指令指導編譯器在實際編譯開始之前對資訊進行預處理
所有的前處理器指令都是以#開始,且在一行上,只有空白字元可以出現在前處理器指令之前。前處理器指令不是語句,所以不以分號結束。
C#編譯器沒有一個單獨的前處理器,但是,指令被處理時就像是有一個單獨的前處理器一樣。在C#中,前處理器指令用於在條件編譯中起作用。與C和C++不同,他們不是用來建立巨集。一個前處理器指令必須是該行上的唯一指令。
C# I/O類:
FileStream類:
Systom.IO名稱空間中的FileStream類有助於檔案的讀寫與關閉.該類派生自抽象類Stream。