原创 C#面向對象--多態
一、對於繼承自同一基類的多個不同派生類的實例,在運行時可以將它們賦值給基類類型的變量,訪問該變量的同一個成員會根據該變量運行時類型的不同而產生不同的行爲,這個特性即被稱爲多態(Polymorphism);多態允許以同一種方式訪問同一個變
原创 使用C#的null條件運算符?.的注意事項
Introduction: 在C#6及以上版本中,加入了一項特別好用的運算符:Null條件運算符?.和?[]可以用來方便的執行判空操作,當運算符左側操作數不爲null時纔會進行訪問操作,否則直接返回null。這極大的簡化的判空代碼的書寫
原创 C#面向對象--屬性
一、屬性(Property)作爲類和結構的成員,是對字段的一種封裝方式,實際上是一種特殊的方法,被稱爲訪問器(Accessor),從而隱藏實現和驗證代碼,有助於提高字段讀取和賦值的安全性和靈活性; 1.屬性訪問器包含兩種類型:用於讀
原创 C#效率優化(3)-- 使用foreach時避免裝箱
Introduction: ※本文不是在描述舊版本Unity中mono編譯器導致的foreach語句額外裝箱錯誤 博主是一名Unity 3D遊戲開發者,遊戲使用C#+lua開發,最近在優化C#代碼時,發現了一處使用foreach不恰
原创 C#面向對象--索引器
一、索引器(Indexer)允許類和結構的實例像數組一樣通過索引取值,可以看做是對[]運算符的重載,索引器實際上就是有參數的屬性,也被稱爲有參屬性或索引化屬性,其聲明形式與屬性相似,不同之處在於索引器的訪問器需要傳入參數; 1.聲明索
原创 C#面向對象--結構
一、結構(Struct)是CTS中五種基本類型之一,是一種值類型,同樣封裝了同屬一個邏輯單元的數據和行爲,這些數據和行爲通過結構中的成員表示;結構與類共享大多數相同的語法,但結構比類受到的限制更多,結構適用於表示輕量級類型;使用stru
原创 C#面向對象--類
一、類(Class)是CTS中五種基本類型之一,是一種引用類型,封裝了同屬一個邏輯單元的數據(Data)和行爲(Behavior),這些數據和行爲通過類中的成員表示;使用class關鍵字定義類: //定義一個公共類MyClass pu
原创 C#效率優化(4)-- 編譯器對數組遍歷的優化
在平時開發過程中,數組是我們使用頻率最高的類型之一,在使用定長列表時,數組可以說是最佳方案,這也是我們最熟悉的數據結構之一。 在C#中使用數組,可以獲取在內存上連續的相同類型的一組變量,在連續訪問時可以滿足CPU訪問寄存器的時間局部
原创 C#面向對象--命名空間
一、在C#中,使用命名空間(Namespace)可以幫助控制自定義類型的作用範圍,同時對大量的類型進行組織;使用namespace關鍵字聲明命名空間,命名空間可以嵌套使用: namespace MyNameSpace { na
原创 C#效率優化(5)
佔個坑。。
原创 C#效率優化(4)
佔個坑。。
原创 c# -- is和as運算符
一、is運算符用於判斷一個對象是否可以轉換爲指定的類型,不會拋出異常,返回bool值用來表示是否轉換成功: if (myObj is MyClass) { //do... } 當滿足以下任意一種情況時轉換成功:
原创 C#面向對象--封裝
一、抽象和封裝是面向對象編程的基礎特性,抽象用來忽略細節,在不同的層次上處理細節,封裝則實現了對細節的不同程度的訪問權限;即抽象允許相關信息可視化,封裝用來實現所需級別的抽象; 1.根據封裝的原則,命名空間可以指定其中每個類型對外部
原创 C#類型轉換
一、由於C#是強類型語言,變量在聲明後不能重新聲明爲其它類型,但可以通過類型轉換(Type Conversion)將符合轉換條件的其它類型的變量轉換爲目標類型的變量,有以下幾種類型的轉換方式: 二.隱式轉換(Implicit Con