Time of Update: 2018-12-06
文章目錄 C#基礎拾遺02-XML序列化 C#基礎拾遺02-XML序列化1. 什麼叫序列化?序列化(Serialize)是指將Object Storage Service到介質(如檔案、記憶體緩衝區等)中或是以二進位方式通過網路傳輸。反序列化(Deserialize)指將這些連續的資料重新構建一個與原始對象狀態相同的對象2.
Time of Update: 2018-12-06
1. 註冊表介紹 註冊表查看工具regedit.exe。最進階主要包括5個鍵。另外還有2個隱藏的,一般不常用。2. 註冊表操作.NET操作註冊表主要用到兩個類,命名空間為Microsoft.Win32。RegistryKey:針對具體鍵的操作,包括3個唯讀屬性和一些列的方法,分別添加、刪除和設定子鍵和值。Registry:主要包括7個唯讀屬性,分別對應可能存在的7個頂級鍵。3.
Time of Update: 2018-12-06
1. Enum定義 枚舉類型是經常用的一種“名稱/值”的形式,例如:public enum FeedbackStatus { New, Processing, Verify, Closed
Time of Update: 2018-12-06
最近幾天學了參數,其實對於參數本不陌生,從上學學C語言基礎的時候就學過了。不過細心學下來,還是收穫了一些。一、 具名引數、選擇性參數具名引數和選擇性參數是在Visual C#2010中引入的新特性。 笨地兒我個瓜不兮兮的,今天才知道。 選擇性參數:定義方法時為參數設定預設值,調用該方法時可以省略為某些形參指定實參。 具名引數:調用方法時,通過指定參數名稱的方式為特定形參指定實參。指定時是根據名稱將形參和實參關聯,而不是與參數在列表中的位置關聯。例如: class Program {
Time of Update: 2018-12-06
我們都知道,實值型別是不能為Null的,但是在實際應用中有些情形卻需要將實值型別置為null。因此,CLR中引用了可空實值型別的用法。今天的文章中見到最多的符號估計就是?了吧。?——初識可空實值型別1. 我們首先看一下可空實值型別的聲明方法。普通的非空實值型別為null時會發生如下的提示: 但是只要在類型後面綴上個“?”,一切都解決了。此時變數的取值範圍在原來基礎上添加了一個null。 2. 實際上int?
Time of Update: 2018-12-06
CLR不允許繼承多個基類,但是可以繼承多個介面。凡是能使用具名介面類型的執行個體的地方,都能使用實現了介面的一個類型的執行個體。 介面是對一組方法簽名進行了統一命名,但不提供任何實現,而具體類則必須為繼承的全部介面提供實現。 1. 定義介面 介面是用interface關鍵字定義對一組方法簽名,介面名稱一般以字母I開頭;而且還可以為介面定義事件、索引器和屬性,但禁止定義構造器和執行個體欄位,也不能構造任何靜態成員。例如: public interface IShout{ public
Time of Update: 2018-12-06
對於一些現成的類,如果我們想添加一些新的方法來完善功能,但是不想改變已有的封裝,也不想使用衍生類別,那麼該怎麼辦呢?這裡我們可以使用擴充方法。一見鐘情--初識擴充擴充方法使您能夠向現有類型“添加”方法,而無需建立新的衍生類別型、重新編譯或以其他方式修改原始類型。我們首先來看個例子,有個直觀的認識。一個現有的類User:public class User { string _name; public User(string Name) {
Time of Update: 2018-12-06
跟小靜讀CLR via C#(05)- 訪問限定、資料成員今天跟大家分享一下關於訪問限定和資料成員的知識。主要包括以下兩點:Abstract, sealed, virtual, new, override怎麼用?Const 和 readonly好像都表示不能改變的值,有什麼區別呢?一、 訪問限定類和方法有一些訪問限定符,如private,public等。除此之外,還包含一些預定義特性。下面幾個你都知道嗎?1. 類的預定義特性Abstract——抽象類別。不能執行個體化。如果衍生類別不是抽象類別,
Time of Update: 2018-12-06
跟小靜讀CLR via C#(04)- 本是同根生說起.NET中的類,本是同根生,一點不為過。因為CLR要求所有類都要繼承自System.Object。所有對象都必須提供一組通用操作,包括對象的等值性、唯一性、散列碼以及複製。一、等值性——Equals()方法 有時候我們需要比較兩個對象是否相等,比如在一個ArrayList中進行排序尋找等操作時。System.Object提供了Equals()虛方法:class Object{public virtual Boolean
Time of Update: 2018-12-06
文章目錄 5.番外篇——查看註冊客戶 提起事件,我們都不陌生,事件使類之間有了互動的能力。它是建立在委託基礎上的。有了前面對委託的瞭解,相信讀起事件來也不會太難了。關於事件,現成的好文章數不勝數,本不打算寫了。不過問道有先後,各抒己見,也不為過。想了想,還是不偷懶了,最起碼能逼自己動動手,多理解幾分。一、 事件能幹什嗎?類通過維護一個已登記事件列表,當事件發生的時候可以通知已登記的方法。主要功能:
Time of Update: 2018-12-06
提起屬性,我們都不陌生。它用起來就像訪問public資料成員一樣,但實際上是調用了內部定義的相應方法。通過使用屬性保持了較好的資料封裝,而且訪問很方便,接下來我們共同複習以下CLR允許定義的兩種屬性:無參屬性和有參屬性(索引器)。 一、 無參屬性1. 定義屬性
Time of Update: 2018-12-06
跟小靜讀CLR via C#(03)- 對象建立和類型轉換本節內容不太複雜,主要是介紹類的執行個體建立過程,以及類型之間相互轉換的知識。一、 建立對象CLR要求用new操作符建立對象,這個操作符在編譯時間產生的IL指令為newobj。例如:Student XiaoJing=new Student(“XiaoJing”,”1986”);那麼在建立過程中,究竟發生了什麼事呢?分配空間。在託管堆中分配該類所需要位元組數的記憶體空間。初始化對象的附加成員。每個對象有兩個附加成員:一是指向類方法表的指標;
Time of Update: 2018-12-06
泛型就像是一個模板,常常定義一些通用的演算法,具體調用時再替換成實際的資料類型,提高了代碼的可重用性。 一、初識泛型1. 簡單一實例以最常用的FCL中的泛型List<T >為例: static void Main(string[] args) { List<int> num = new List<int>(); num.Add(1); num.Add(3); int
Time of Update: 2018-12-06
跟小靜讀CLR via C#(08)-操作符對於操作符,我們並不陌生,例如+,-,*,%等二元操作符,以及++,!等一元操作符。但是對於非基元類型,我們需要通過一些自訂方法才能使用這些操作符。今天主要和大家分享關於操作符重載和轉換操作符的知識。一、操作符重載方法CLR並不知道操作符,操作符重載對於它來說只是一些方法而已。但是CLR規定了語言應該如何公開操作符重載,每種程式設計語言自行決定是否支援操作符重載。定義操作符重載方法注意兩點:CLR規範要求操作符重載方法必須是 public
Time of Update: 2018-12-06
摩爾紋是大螢幕顯示器在顯示大面積相同色彩的畫面時,出現的彩色波浪狀條紋。它會影響視覺效果,在Windows 98關機畫面可以看到(Windows XP 關機畫面改為逐漸灰化)。它是掃瞄線花紋與磷光體所產生的幹擾現象。其強度與點距、點狀大小、解析度、螢幕大小及亮度等有關。 樣本: NO.1正常顯示時: NO.2準備關機時,背景逐漸層暗,出現摩爾紋現象。 NO.3背景完全變灰,取消後摩爾紋現象消失,返回圖1狀態。
Time of Update: 2018-12-06
跟小靜讀CLR via C#(02)-基元類型、參考型別、實值型別一、 基元類型編譯器能夠直接支援的資料類型叫做基元類型。例如int, string等。基元類型和.NET架構類庫FCL存在著直接的映射關係。 string和String? 面試的時候曾經被問到過這個問題,C#中的基元類型string實際上對應了System.String(FCL)類型,所以兩者使用的時候沒有什麼不同。 類型轉換
Time of Update: 2018-12-06
本來按照進度應該學習事件了,可總覺得應該委託在前,事件在後,才好理解。委託是一個類,它提供了回呼函數機制,而且是型別安全的。使用委託可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,提高了程式的可擴充性。使用委託老規矩,先上個例子:結果:幾點說明:使用關鍵字delegate聲明委託。委託是型別安全的,定義時其傳回值類型、參數個數及參數類型要和想要調用的方法相容。在這個例子中,通過Introduce方法擷取對delegateIntroduce委派物件的引用。委派物件相當於方
Time of Update: 2018-12-06
一、 靜態類-Static靜態類是一些不能執行個體化的類,它的作用是將一些相關的成員組合到一起,像我們常見的Math, Console等。靜態類由static關鍵字標識,靜態類成員也只能是static類型。Static關鍵字只能用於修飾類,不能修飾實值型別。C#編譯器對靜態類的限制:1. 基類只能為System.Object。 因為繼承是針對對象而言的,靜態類不能建立執行個體,所以從其他類派生沒有實際意義。2. 靜態類不能實現介面。3.
Time of Update: 2018-12-06
好久沒寫文章了,再拿起這本書,學習加分享,樂趣無窮啊。這兩天看了寫關於字串的知識,從學寫代碼的時候開始,我們就基本天天跟String打交道,對它再熟悉不過了。但是仔細看看,還是有一種撥開雲霧的感覺,對平日裡的一些問題頓然明白了。一、 string執行個體化 1. 建立string對象 string str1 = "hello world."; //√ string str2 = new string("hello world"); //× 按照錯誤提示試一下char[]型別參數發現可以的:
Time of Update: 2018-12-06
跟小靜讀CLR via C#(06)- 構造器最近忙著看新還珠,好幾天不學習了。玩物喪志啊,罪過罪過。今天總結的是類構造器的知識,其實這方面的文章蠻多的,可還是覺得親自寫一下對自己的思考和認識會有提高。對於構造器,大家應該都不陌生,它主要是用來進行初始化狀態的。包括執行個體構造器和類構造器兩種,先給大家看個實際的例子。class Dog : Animal { 欄位 private string _name; private int _age;