c# 常用區別總結

來源:互聯網
上載者:User

c#常用的區別總結

抽象類別和介面的區別

抽象類別

使用abstract關鍵字(abstract class)

可以包含功能定義和實現

反映的是事物的內部共性

不能被執行個體化

例:Public abstract class Withdraw

介面

使用interface關鍵字

只能包含功能定義

因此反映的是事物的外部特性

不能被執行個體化

例:Public interface  Withdraw

結構和類的區別

結構

是實值型別,儲存在棧上

對結構中的資料進行操作比對類或對象中的資料進行操作速度要快

一般用結構儲存多種類型的資料

當建立一個很多類或對象共用的小型對象時,使用結構效率更高

參考型別,儲存在受管制的堆上

抽象方法和虛方法的區別

抽象方法

使用abstract關鍵字

必須被衍生類別覆寫的方法

可以看成沒有實現體的虛方法,是虛方法的一種

例:Public abstract bool Withdraw(…);

虛方法

使用virtual關鍵字

虛方法可以有實現體

可以在子類中覆蓋,也可以不覆蓋使用父類的預設實現

例:public virtual bool Withdraw(…);

實值型別和參考型別的區別

實值型別

實值型別的變數直接存放實際的資料

把變數的值儲存在堆棧中

參考型別

參考型別的變數存放的則是資料的地址,即對象的引用

把實際資料的地址儲存在堆棧中,而實際資料則儲存在堆中

堆和堆棧的區別

堆一般用於儲存可變長度的資料,如字串類型

堆棧

用於儲存固定長度的資料,如整數型別的資料

Constreadonly的區別

Const

只能在該欄位聲明中初始化

const 欄位是編譯時間常數

const 預設就是靜態

const 對於參考型別的常數,可能的值只能是 string、實值型別和 null

Readonly

可以在聲明或建構函式中初始化

根據所使用的建構函式,readonly 欄位可能具有不同的值

readonly 欄位可用於運行時常數

readonly 如果設定成靜態就必須顯示聲明

readonly可以是任何類型

對於一個 readonly 的 Reference 類型,只是被限定不能進行賦值(寫)操作而已。而對其成員的讀寫仍然是不受限制的

面向過程和物件導向的區別

面向過程

是一種謂語和賓語的關係

物件導向

是一種主語和謂語的關係。特徵:封裝、繼承、多態

類和對象的區別

類是對某一類事物的描述,是抽象的、概念上的 定義。 *物件導向的設計的重點是類的設計。

對象

對象又稱作執行個體,是實際存在的該類事物的每個個體。

==equeals()的區別

==

辨別實質是否相等

equeals()

辨別長相是否相等

              overrideoverload的區別

override

表示重寫,用於繼承類對基類中虛成員的實現

overload

表示重載,用於同一個類中同名方法不同參數(包括類型不同或個數不同)的實現

privateprotectedpublicinternal 修飾符的存取權限的區別

private

私人成員, 在類的內部才可以訪問

protected

保護成員,該類內部和繼承類中可以訪問

public

公用成員,完全公開,沒有訪問限制

internal

在同一命名空間內可以訪問

  DataReaderDataSet的異同

DataReader

始終佔用資料連線 線上操作資料庫任何對SqlConnection 的操作都會引發DataReader的異常,因為DataReader每次只在記憶體中載入一條資料,所以佔用的記憶體是很小的..因為 DataReader的特殊性和高效能.所以DataReader是只進的..你讀了第一條後就不能再去讀取第一條了

DataSet

則是將資料一次性載入在記憶體中.拋棄資料庫連接..讀取完畢即放棄資料庫連接,因為DataSet將資料全部載入在記憶體中.所以比較消耗記憶體,但是確比DataReader要靈活..可以動態添加行,列,資料.對資料庫進行回傳更新操作

  Appplication.Exit Form.Close的區別

Appplication.Exit

退出整個引用程式

Form.Close

關閉指定的Form

  Paramsrefout之間的區別

Params

在方法聲明中的 params 關鍵字之後不允許任何其他參數,並且在方法聲明中只允許一個

Ref

需要顯式初始化傳遞到 ref 參數的參數必須最先初始化。。

屬性不是變數,不能作為 ref 參數傳遞

Out

不必初始化作為out參數傳遞變數,必須在方法返回之前為 out 參數賦值屬性不是變數,不能作為 out 參數傳遞

  Finalize()和Dispose()之間的區別

Finalize()

用於隱式釋放資源,相當於C++中的解構函式

Dispose()

用於顯示釋放資源

  做強簽名的assembly與不做強簽名的assembly有什麼不同

強簽名的程式集

可以做成com 可以安裝到gac中

不做強簽名的程式集

不能做出com,不能安裝到gac中

                                                        Assembly.LoadFrom()、Assembly.LoadFile()的區別

  Assembly.LoadFrom()

  它是載入組件檔的內容,只將傳入參數的檔案載入,不考慮程式集依賴,但如果有相同實現,但位置不同的檔案用LoadFrom是不能同時載入進來的

  Assembly.LoadFile()

  由於LoadFile載入的是檔案,所以調用它之後,可能因為缺少必要的依賴造成無法被執行,如果有相同實現,但位置不同的檔案用LoadFile是可以同時載入進來的

前期綁定(early-binding)和後期綁定(late-binding)的區別

前期綁定

前期綁定是在編譯的時候就確定了要繫結資料,前期綁定如果失敗,會在編譯時間報編譯錯誤

後期綁定

而後期綁定是在啟動並執行時候才填充資料,後期綁定失敗只有在運行時的時候才發生

使用ASMX的XML Web服務與使用SOAP的.NET Remoting的區別

Web服務

Web服務使用的訊息機制. Web Service能用於不同平台,不同語言。

Remoting

Remoting採用的RPC,Remoting只適用於.Net。效率上Remoting高於Xml Web Service

面向介面、物件導向、面向方面編程的區別

面向介面

面向介面更關注的是概念,它的原則是先定義好行為規範,再根據行為規範建立實現,嚴格的來說,面向介面應該是物件導向中的一部分吧,因為物件導向也強調的是依賴倒置原則,也就是實現依賴於抽象,而抽象不依賴於具體實現,更具比較的應該是面向介面與面向抽象對象,我的體會是面向介面更加靈活,但實現時候,稍微有些代碼冗餘,而面向抽象可以結合面向介面,先定義介面,再定義抽象類別,在抽象類別中處理一些公用邏輯,再實現具體實作類別。

物件導向

物件導向是對複雜問題的分解

面向方面

面向方面的編程是一種新概念,它解決了很多物件導向無法解決的問題,比如物件導向技術只能對業務相關的代碼模組化,而無法對和業務無關的代碼模組化。而面向方面正是解決這一問題的方案,它的關鍵思想是"將應用程式中的商業邏輯與對其提供支援的泛型服務進行分離"。

線程與進程的區別

線程(Thread)與進程(Process)二者都定義了某種邊界,不同的是進程定義的是應用程式與應用程式之間的邊界,不同的進程之間不能共用代碼和資料空間,而線程定義的是代碼執行堆棧和執行內容的邊界。一個進程可以包括若干個線程,同時建立多個線程來完成某項任務,便是多線程。而同一進程中的不同線程共用代碼和資料空間。用一個比喻來說,如果一個家庭代表一個進程,在家庭內部,各個成員就是線程,家庭中的每個成員都有義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也可以派出幾個成員來協同完成,而家庭之外的人則沒有辦法直接消費不屬於自己家庭的財產

  強型別和弱類型的區別

強型別

在編譯的時候就確定類型的資料,在執行時類型不能更改,強型別安全,效率高,一般用於編譯型程式設計語言,如c++,java,c#,pascal等

弱類型

而弱類型在執行的時候才會確定類型,弱類型相比而言不安全,在啟動並執行時候容易出現錯誤,但它靈活,多用於解釋型程式設計語言,如javascript,vb等

  Remoting的通道Tcp和Http的區別

Tcp

Tcp通道提供了基於Socket的傳輸工具,使用Tcp協議來跨越Remoting邊界傳輸序列化的訊息流程.TcpChannel使用二進位格式序列化訊息對象,因此它具有更高的傳輸效能。

Http   

HttpChannel類型使用Soap格式序列化訊息對象,因此它具有更好的互通性.

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.