Time of Update: 2018-12-07
1. is 是驗證操作對象是不是自己希望的 運算公式:對象 is 類型 返回true:對象是指定類型 返回false:對象不是指定類型2. as 是將對象轉換成指定類型運算公式:對象 as 類型 轉換成功:對象的類型就是指定的類型 轉換失敗:返回null注意: The "is" and "as" operator must be used
Time of Update: 2018-12-07
一、抽象類別: 抽象類別是特殊的類,只是不能被執行個體化(可以用衍生類別執行個體化基類對象);除此以外,具有類的其他特性;重要的是抽象類別可以包括抽象方法(當然它可以有普通方法),這是普通類所不能的。抽象方法只能聲明於抽象類別中,且不包含任何實現,衍生類別必須覆蓋(重寫)它們。二、介面: 介面包含了一組方法的原型,介面是參考型別的,類似於類,和抽象類別的相似之處有三點: 1、不能執行個體化;(參見MSDN明確介面實作) 2、包含未實現的方法聲明;
Time of Update: 2018-12-07
在本文中將從基礎角度講解HashTable、Dictionary的構造和通過程式進行插入讀取對比。 一:HashTable 1.HashTable是一種散列表,他內部維護很多對Key-Value索引值對,其還有一個類似索引的值叫做散列值(HashCode),它是根據GetHashCode方法對Key通過一定演算法擷取得到的,所有的尋找操作定位操作都是基於散列值來實現找到對應的Key和Value值的。 2.我們需要使用一個演算法讓散列值對應HashTable的空間地址盡量不重複,
Time of Update: 2018-12-07
前端開發中JavaScript代碼的維護總是讓人頭疼,特別是在富用戶端應用中,必須要編寫非常龐大的JavaScript代碼,雖然JavaScript聲稱是物件導向的語言,但對於現代語言中常見的繼承、強型別等的支援十分有限。如果我們能夠將C#語言中的特性運用於JavaScript上,那麼肯定將極大地提高JavaScript代碼的維護性,提升開發效率。Saltarelle編譯器就是這樣的一個工具,他能將C#代碼編譯為JavaScript代碼。本文將展示如何使用Saltarelle編寫JavaScri
Time of Update: 2018-12-07
一、Delegate委託可以理解為一個方法簽名。 可以將方法作為另外一個方法的參數帶入其中進行運算。在C#中我們有三種方式去建立委託,分別如下: public delegate void Print(string str); static void delegatemethod(string str) { Console.WriteLine(str); } public static void
Time of Update: 2018-12-07
線程:線程是進程的獨立執行單元,每一個進程都有一個主線程,除了主線程可以包含其他的線程。多線程的意義:多線程有助於改善程式的總體響應性,提高CPU的效率。 多線程的應用程式定義域是相當不穩定的,因為多個線程在同一時間內都能運行共用的功能模組。為了保護應用程式的資源不被破壞,為多線程程式提供了三種加鎖的機制,分別是:Monitor類、Lock關鍵字和Mutex類。 1. lock
Time of Update: 2018-12-07
C#——方法實現總結本文分兩部分來寫,第一部分:C#方法實現的理解與問題,第二部分:C#中方法實現的種類。第一部分:C#方法實現的理解與問題理解:1. 使用virtual和override關鍵字,在基類和衍生類別中用同樣的方法簽名實現不同的方法2. 使用interface介面,在不同的類中,用相同的方法簽名實現不同的方法3. 用委託delegate,把不同類中的方法集合在一起,然後一起調用,完成某種綜合的功能4.
Time of Update: 2018-12-07
1. 擷取絕對檔案路徑System.IO.Path.GetFullPath(string path)string fileName = "myfile.ext";string path1 = @"mydir";string path2 = @"\mydir";string fullPath;fullPath = Path.GetFullPath(path1);fullPath = Path.GetFullPath(fileName);fullPath =
Time of Update: 2018-12-07
1.委託delegate委託delegate也是一種類型,在任何可以聲明類的地方都可以聲明委託,它將方法當做另一個方法的參數進行傳遞,這樣就可以傳遞不同的方法,完成不同的功能,使程式具有很好的可擴充性。舉例:假設這裡有一台電腦,有人會用它寫程式,有人會用它打遊戲,有人會用它看電影,有人會用它邊聽音樂邊玩遊戲,有人會用它邊聽音樂邊看文檔,邊上QQ。這台電腦可以抽象成一個類Computer,裡面有個方法DoWork,所有的人都要通過這個方法來做自己的事情。不用委託的時候我們可以實現一些固定的東西,
Time of Update: 2018-12-07
C#的多態性:我的理解是:同一個操作,作用於不同的對象時,會有不同的結果,即同一個方法根據需要,作用於不同的對象時,會有不同的實現。C#的多態包括:介面多態,繼承多態。其中繼承多態又包括通過虛擬方法實現的多態和通過抽象方法實現的多態性例如:基類動物都有吃的方法,但是不同的動物吃的東西就會不一樣,例如狼吃肉,羊吃草,這樣“吃”的這個方法就要在衍生類別裡面重新實現以下,運行時,通過指向基類的指標,來調用實現衍生類別中的方法。接下來舉例實現多態性。1.
Time of Update: 2018-12-07
哈哈,最近剛剛開始學習C#,感覺挺好。 下面一段代碼是用C#實現的,主要完成對字串的加密和解密操作。 //原始碼//對一段字串實現加密解密操作using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace study_test4{ class Program { static void Main(string[]
Time of Update: 2018-12-07
命名空間和類型具有“成員”。通常可以通過限定名來訪問實體的成員。限定名以對實體的引用開頭,後跟一個“.”標記,再接成員的名稱。類型的成員或者是在該類型中聲明的,或者是從該類型的基類“繼承”的。當類型從基類繼承時,基類的所有成員(執行個體建構函式、解構函式和靜態建構函式除外)都成為衍生類別型的成員。基類中關於成員的可訪問性的聲明不能控制該成員是否可繼承:繼承性適用於任何成員,只要它們不是執行個體建構函式、靜態建構函式或解構函式。然而,在衍生類別中可能不能訪問已被繼承的成員,原因或者是因為其已聲明可
Time of Update: 2018-12-07
在使用Object類的受保護方法MemberwiseClone ()時,MSDN上的解釋是--建立當前 Object 的淺表副本。那麼什麼是“淺表副本”呢?經過查閱相關資料,得到的解釋是這樣的:A shallow copy of a collection copies only the elements of the collection, whether they are reference types or value types, but it does not copy the
Time of Update: 2018-12-07
當類中的方法聲明前加上了virtual修飾符,我們稱之為虛方法,反之為非虛。使用了virtual修飾符後,不允許再有static、abstract或override修飾符。對於非虛的方法,無論被其所在類的執行個體調用,還是被這個類的衍生類別的執行個體調用,方法的執行方式不變。而對於虛方法,它的執行方式可以被衍生類別改變,這種改變是通過方法的重載來實現的。下面的例子說明了虛方法與非虛方法的區別。例子:CodeCode highlighting produced by Actipro
Time of Update: 2018-12-07
大家都知道,抽象類別是不可以執行個體化的,那麼在抽象類別中是否可以有建構函式呢?很多初學者都有類似的疑問! 答案是肯定的,而且如果我們自己沒有定義的話,編譯器還會為我們產生一個預設的建構函式的,看這段代碼: public abstract class MyAbstractClass { }我們自己並沒有自己定義建構函式,我們用ILDasm工具來看看產生的IL代碼:.method family hidebysig specialname rtspecialname
Time of Update: 2018-12-07
【導讀】學過編程的朋友都知道類型轉換,並且也都清楚“隱式轉換”、“顯式轉換”、“裝箱”、“拆箱”等概念。但是,類型轉換究竟有多少種?如何對其進行劃分?何時應該使用何種類型轉換?隱式轉換短->長子類->父類實值型別->參考型別顯式轉換長->短父類->子類參考型別->實值型別 變換投射裝/折箱 下載:C#類型轉換.doc(作者:劉彥博(微軟MVP))
Time of Update: 2018-12-07
NO.1:如果在為方法聲明參數時未使用 ref 或 out,則該參數可以具有關聯的值。可以在方法中更改該值,但當控制傳遞迴調用過程時,不會保留更改的值。通過使用方法參數關鍵字,可以更改這種行為。paramsparams 關鍵字可以指定在參數數目可變處採用參數的方法參數。 在方法聲明中的 params 關鍵字之後不允許任何其他參數,並且在方法聲明中只允許一個 params 關鍵字。樣本: CodeCode highlighting produced by Actipro
Time of Update: 2018-12-07
.sln:解決方案檔案,為方案總管提供顯示管理檔案的圖形介面所需的資訊。 .csproj:專案檔,建立應用程式所需的引用、資料連線、檔案夾和檔案的資訊。 .aspx:Web Form頁由兩部分組成:視覺元素(HTML、伺服器控制項和靜態文本)和該頁的編程邏輯。Visual Studio 將這兩個組成部分分別儲存在一個單獨的檔案中。視覺元素在.aspx
Time of Update: 2018-12-07
1.override: 父類:public virtual string ToString(){return "a";} 子類:public override string ToString(){return "b";}2.overload: 同一類中或父子關係類中皆可. public string ToString(){return "a";} public string
Time of Update: 2018-12-07
命名空間允許我們對相關的類型進行邏輯上的組織,這使得我們很方便的地定位一個類型:舉個簡單的例子,我們執行個體化的一個隊列,如果不引入命名空間,則要這樣寫:System.Collections.Queue q=new System.Collections.Queue();那引入命名空間呢? 則只要這樣寫:Using System.Collections;//引入命名空間Queue q=new