Time of Update: 2018-12-04
類,是物件導向語言的基礎。類的三大特性:封裝、繼承、多態。最基本的特性就是封裝性。程式員用程式描述世界,將世界的所有事物都看成對象,怎麼描述這個對象?那就是類了。也就是用類來封裝對象。用書上的話說,類是具有相同屬性和行為的對象的抽象。寶馬汽車、別克汽車、五菱之光汽車... 基本具有相同的屬性和行為,所以可以抽象一個汽車類,當然也可以把路人甲的寶馬汽車、路人乙的別克汽車...
Time of Update: 2018-12-04
我們定義了YSchool,YTeacher類,執行個體化對象時: YSchool shool1 = new YSchool(); shool1.ID = 1; shool1.Name = "清華附中"; YSchool school2 = new YSchool(); school2.ID = 2; school2.Name = "北師大附中";
Time of Update: 2018-12-04
前面提到過,物件導向的三大特性:封裝性、繼承性和多態性。封裝在前面類的定義裡也瞭解的差不多透徹了,現在看看繼承的特性。繼承實際是一個類對另一個類的擴充,後者稱之為基類,前者稱之為子類。繼承就是子類擁有基類的一切屬性和方法,子類還可以增加屬性和方法。但是子類不能去掉父類的屬性和方法。
Time of Update: 2018-12-04
老師都有講課這個方法,一個老師先是在西部偏遠山區,是站在教室裡木頭的黑板前講課;過了幾年表現好,調到了稍微好點的城市裡,是坐在教室前用多媒體裝置講課;又過了幾年考博士了,畢業後繼續當老師,不過現在是躺在家裡對著電腦遠程授課。都是講課這個方法,不同的條件下(參數不同)有不同的執行過程和輸出結果。這就是重載。重載的定義是:在同一個類中
Time of Update: 2018-12-04
在實際項目中,當我們設計一個父類時,經常會遇到這個類不能確定它的具體執行流程的。比如我設計一個檔案類: public class AFile { private string name = string.Empty; private string path = string.Empty; private FileType type = FileType.IsUnknown; public string Name {
Time of Update: 2018-12-04
繼承和抽象類別中提到過,子類與父類的方法間有這些關係:子類直接使用父類方法(但是必須父類方法是public或protected類型);子類的方法覆蓋父類方法(override);子類的方法重載父類方法(overload);看下面這種情況: public class YSchool { private int id = 0; private string name = string.Empty; public int ID {
Time of Update: 2018-12-04
Time of Update: 2018-12-04
前面接觸過介面的概念,其實介面就是一組方法、屬性,然後誰繼承了它,誰就要實現這組方法和屬性。也就是說這個類具備了這個介面定義的一些能力。 介面的這種特性在平常的程式編寫中是有很大作用的,往往完成一個大項目需要很多人同時完成,這樣難免會有一些類都需要某些方法,而且執行流程都差不多。這是在項目設計階段就有必要把這種方法抽象出一個介面,然後在項目中,大家只需實現這個介面,從而防止大家由於各自訂各自的,導致了相同的操作比較混亂。
Time of Update: 2018-12-04
如果想訪問某個類的方法或屬性,一定要先執行個體化該類,然後用該類的對象加.號訪問。比如:有一個使用者類和一個處理密碼(加密和解密)的類。沒產生一個使用者執行個體後,處理密碼類要對密碼進行加密和解密。using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO;namespace
Time of Update: 2018-12-04
C#是物件導向的語言,在物件導向的思想中,只有對象,所有事物都可以用類描述。所以比如這些,int,bool,char,string,double,long等都是類,那麼像,30,2.5,"test"都是對應類的一個對象。 static void Main(string[] args) { string istring = 30.ToString(); string dstring = 2.5.ToString();
Time of Update: 2018-12-04
物件導向三大特性:封裝,繼承,多態。那麼類是從哪裡繼承呢?在物件導向語言中有基類或者也叫做超類的概念,也就是所有類都是從這個類繼承得來的,這個超類叫Object。.net中是這樣描述Object類的: 支援 .NET Framework 類階層中的所有類,並為衍生類別提供低層級服務。這是 .NET Framework 中所有類的最終基類;它是類型階層的根。既然是超類,Object定義了一些關鍵的方法。如下:Equals方法——用於比較兩個執行個體是否相等。public
Time of Update: 2018-12-04
如果代碼中會造成編譯器的反覆裝箱,可改為手動裝箱,這樣來使代碼執行更快,看下面代碼: //手動裝箱 Int32 v = 5; //由於string.Format的參數是object類型,所以這裡會造成三次裝箱。 Console.WriteLine(string.Format("{0},{1},{2}", v, v, v));
Time of Update: 2018-12-04
往往我們在寫代碼的時候,總會在運行中遇到某些問題而導致程式崩潰。這並不是編程人員的水平不行,而是由商務邏輯,作業系統,或者電腦等其它裝置出現問題而造成,比如在c#中經常用到user32.dll裡的一些方法,假如這個檔案被刪掉了,你的程式照樣運行不了。當然作為一個有水平的程式員總會在寫程式時是需要將各種情況都考慮進去的,水平越高考慮的情況就越多,而考慮的越多你的程式崩潰的機會就越少,健壯性就越好。一般來說,程式運行不了會有兩種情況:
Time of Update: 2018-12-04
委託和事件在C#中使用很多,尤其在進行表單編程時,很多的操作都要通過委託和事件來處理和傳遞。這裡詳細解釋下委託和事件的用法和原因,使我們在寫代碼時能更加明白一些。委託的使用事件是一種機制,事件是通過委託實現的,所以看明白了委託,對於事件也就能更好的理解了。先看下面一個小例子。這是描述不同語言的程式員的代碼:比如使用C#的程式員我們這樣描述,其中programerName參數表示這個程式員的姓名。 public void CsharpProgramer(string
Time of Update: 2018-12-04
無論哪種語言,肯定會有集合的概念。而最簡單,最直觀的集合應該就是數組了,數組是在記憶體中連續的一段空間。看看C#中數組的定義。1、int[] intArry ; intArry= new int[6]; 這裡聲明了一個int數群組類型變數intArry,並儲存一個具有6個單元的int數組對象; int[,] intArry2 = new int[3, 4]; 聲明一個int二維數群組類型變數,並初始化一個3行4列的數組對象; int[][] intArry3 = new
Time of Update: 2018-12-04
看了前面一篇委託的用法中http://blog.csdn.net/yysyangyangyangshan/article/details/8252192,我們看到, public void Description(string programerName, DescriptionDelegate description) { description(programerName);
Time of Update: 2018-12-04
1、ICollection介面 數組是.net framework定義的最基本的集合類型,除了數組,.net framework還定義了很多集合類型。開啟msdn可以看到,所有集合都在System.Collections命名空間下:集合類:ArrayList:使用大小可按需動態增加的數組實現IList介面。BitArray:管理值的壓縮數組,該值表示為布爾值,true表示位是開啟的(1),false表示位是關閉的(0)。CaseInsensitiveComparer:比較兩個對象是否相等,
Time of Update: 2018-12-04
瞭解了ICollection介面、迭代以及泛型集合,下面再詳細瞭解一下IList介面。通過MSDN可以看到IList介面有兩種:元素為object類型的IList介面,可以放不同類型的對象引用;IList<T>泛型介面,只能存放指定類型的對象引用。其實,IList和IList<T>也稱之為向量,特點是可以動態改變集合的長度,無需確定集合的初始長度,集合會隨著存放資料的數量自動變化。可以看到IList和IList<T>的繼承關係:[ComVisibleAttri
Time of Update: 2018-12-04
對於ArrayList中如果插入實值型別會引發裝箱操作,而取出實值型別又需要拆箱,如下 ArrayList myArrayList = new ArrayList(); myArrayList.Add(40);//裝箱 myArrayList.Add(80);//裝箱 Int32 a1 = (Int32)myArrayList[0];//拆箱 Int32 a2 =
Time of Update: 2018-12-04
仔細瞭解裝箱和拆箱其實是很有趣的,首先來看為什麼會裝箱和拆箱呢?看下面一段代碼: class Program { static void Main(string[] args) { ArrayList array = new ArrayList(); Point p;//分配一個 for (int i = 0; i < 5; i++) {