国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

面向對象基礎知識01

2019-11-14 15:49:14
字體:
來源:轉載
供稿:網友

C#面向對象編程的注意事項

* 注意自己的命名,

* [JIT]即時編譯:運行到哪里編譯到哪里,編譯之后就放到了內存之中。

* 局部變量(在方法中申明)必須先付值在使用。

* 越抽象的類就可以當做父類。
* 里氏替換原則:

就是需要一個父類的類型的時候給了一個子類的對象是可以的。

*:快捷鍵

   *導入命名空間(shift+alt+F10)

   *構造函數:CTOR

   * :base():表示調用父類的構造函數

**This來調用本類的成員,base來調用父類中的成員。

**訪問級別約束

*多態的實現 

*:靜態的構造函數

    *:在靜態類中所包含的所有成員都必須的是靜態成員。靜態屬性只有用類名.出來,不能用實例化對象來點出來。<靜態成員的生命周期是很長的,一般在程序退出的時候才會被回收釋放資源,而實例化的對象一用完就會被GC回收。>

*記錄代碼的時候要記其主要的結構,主要的步奏。

    這個是在類里面聲明一個靜態的屬性,其次就是一個隱藏靜態的構造函數。靜態構造函數只執行一次,(第一次使用靜態類,靜態成員,靜態方法)

靜態的構造函數不能手動調用,而是在第一次使用靜態類的時候自動調用的,沒有訪問修飾符,也沒有任何參數。具體的值是在里面設置好的。

多態<同一段代碼在執行的時候有不同的功能>

*類型的另外一種類型轉換

<只是這種轉換不提示錯誤,值變為null,強類型轉換則直接報異常。>

Student a=p as Student();

wps5C6F.tmp

wps5C70.tmp

  *抽象類

  《就是在類前面加一個abstract就是抽象類》

一般的類就是抽象的,但是抽象類是比較高級的抽象的類,不能被實例化。

下面是抽象類的一般特性

wps5C80.tmp

  抽象類只定義不能在其中有具體的實現,智能在繼承的子類中進行重寫。

*注意以后在使用類屬性的時候,在給其屬性賦值的時候都要放在構造函數(CTOR)里面。

**練習實例

wps5C81.tmp

*:值類型與引用類型

  值類型:以字節保存在內存《保存在棧》里面,不可繼承

  <int char double long short enum decime等>

  引用類型;在堆,棧里面都有保存,在棧里面只保存堆里面的地址,實際的值是放在堆里面的。可以繼承

  <string 數組 類 接口,委托 >

  <引用傳遞,值傳遞>

      &hellip;…引用傳遞:拷貝棧中的堆地址,指向同一塊堆;

      ……ref的引用傳遞:兩個變量指向同一個棧(棧中有數據)的地址,那就是他們指向的堆是同一個,不管改變那一個,堆里面的數據都會改變。

      ……值傳遞:拷貝棧中的內容,將其作為一個副本。

  (棧里面數據進行拷貝的時候是復制數據,為一個副本)

*:接口問題探討

java里面老師說就看下樓層上面的管道,這樣就可以可聯想到接口的具體意義。

wps5C92.tmp

接口的定義與命名

  *一般接口以大寫I開頭,-able結尾,關鍵字是interface

  *接口里面只能包含方法(方法,屬性,索引器,事件)。

  *接口里面都不能寫任何訪問修飾符。<接口中默認為public的訪問修飾符>

  *接口不能被實例化,屬性只能寫(get;set;)方法,不能再繼續寫。

  *接口中的成員子類必需全部實現。接口可以“多繼承”一個類只能繼承自一個父類但是可以實現多個接口。

Public class interface IFlyable

{

    Void SayHi();

    //索引器

    String this[int index]

   {

       get;set;

    }

}

*:接口實例

接口的實現分為兩種,直接實現,顯示實現接口,直接實現是公共的public,而顯示實現接口是解決重名問題的,為私有的。

wps5C93.tmp

*類型轉換

*顯式轉換,隱式轉換,強類型轉換(容易丟失精度)

1:sizeof判斷其占用幾個字節,

{console.writeline(sizeof(int))}

2:隱式轉換(當其數據類型一致,且大字節轉換為小字節的會發生類型轉換。)

3:所有數組的父類是Array類型。

*異常處理<try---catch----finally>

*運行時程序出現的錯誤

  *finally: 代碼清理,釋放資源,無論發生了什么它里面的內容都講會被執行。相當與在C語言里面switch后面的define的含義。

  *當程序中某行代碼出錯,后面的代碼就不會往后執行。

  *對于異常的處理我們可以寫多個catch(里面的異常方法不一樣)來處理各自的異常。

wps5CA3.tmp

*手動異常的拋出<多使用邏輯判斷來解決異常。為了不浪費資源。>

  Throw new Exception(“有異常了”)

*方法會為返回值單獨設置變量,這樣子返回值里面的值就不會改變了。

Ref和Out比較

*比較兩個對象是否為同一個對象

  Console.writeline(object.ReferenceEquals(p1,p2));

  Console.writeline(object.ReferenceEquals(p1,p3));

若p1和p2為同一對象則返回值為true,若不是則返回值為false.

*關鍵字sealed<此為密封類>

   在其前面加上一個關鍵字sealed表示此類不被繼承。

*字符串(string )的不可變性和字符串池

    1:String的相加減是字符串的疊加,會開批新的堆內存。

2:字符串常量的保存將能保存到堆內存中,也就是保存在了字符串池中。也相當與保存到塊表里面。<string.IsInterned()>

*字符串

1:字符串格式化

這里是取代站位符,Console.WriteLine(“我今年(0,-10,c2)歲了”,22);

2:StringBuilder類的使用

一般的情況都是在使用字符串拼接的時候才會用到,因為它的速度快。

wps5CA4.tmp

  3:監視字符串等C#程序的快慢的方法

在需要添加監視的程序前面實例化Stopwatch對象。

Stopwatch watch=new Stopwatch();

watch.Start()

//這中間是需要看執行時間的程序

Watch.Stop();

Console.WriteLine(watch.Elapsed);

4:弱引用

就是變量在初始化完成之后,在棧里面沒有地址指向它,則它將被GC回收,此時用WeakReference重新申明一下,就是將其弱引用下,以后使用的時候直接使用就可以使用。<WeakReference wr=new WeakReference(p)>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇阳县| 津市市| 乡城县| 北川| 临漳县| 中卫市| 辛集市| 博乐市| 安岳县| 堆龙德庆县| 大丰市| 托克逊县| 高雄县| 牡丹江市| 乌兰察布市| 丹阳市| 兴化市| 武强县| 胶州市| 长岭县| 洱源县| 驻马店市| 繁峙县| 万荣县| 太康县| 望谟县| 康定县| 湖州市| 呼玛县| 丽水市| 根河市| 峨边| 沁水县| 济阳县| 江油市| 连江县| 恭城| 札达县| 玛沁县| 静海县| 时尚|