原文:http://hussar.cnblogs.com/archive/2006/06/04/417265.html
1. new 關鍵字用法
(1)new 運算子
用於建立對象和調用建構函式。
(2)new 修飾符
用於向基類成員隱藏繼承成員。
(3)new 約束
用於在泛型聲明中約束可能用作型別參數的參數的類型。
2.如何把一個Array複製到ArrayList裡
(1) 實現1
string[] s ={ "111", "22222" };
ArrayList list = new ArrayList();
list.AddRange(s);
(2)實現2
string[] s ={ "111", "22222" };
ArrayList list = new ArrayList(s);
3.DataGrid的Datasouse可以串連什麼資料來源
l DataTable
l DataView
l DataSet
l DataViewManager
l 任何實現IListSource介面的組件
l 任何實現IList介面的組件
4.概述反射和序列化
反射
公用語言運行庫載入器管理應用程式域。這種管理組件括將每個程式集載入到相應的應用程式定義域以及控制每個程式集中類型階層的記憶體布局。
程式集包含模組,而模組包含類型,類型又包含成員。反射則提供了封裝程式集、模組和類型的對象。您可以使用反射動態地建立類型的執行個體,將類型綁定到現有對象,或從現有對象中擷取類型。然後,可以調用類型的方法或訪問其欄位和屬性。
序列化
序列化是將對象狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是還原序列化,它將流轉換為對象。這兩個過程結合起來,可以輕鬆地儲存和傳輸資料。
5.概述O/R Mapping 的原理
利用反射,配置將對象和資料庫表映射。
6. 可訪問性層級有哪幾種
l public 訪問不受限制。
l protected 訪問僅限於包含類或從包含類派生的類型。
l internal 訪問僅限於當前程式集。
l protected internal 訪問僅限於從包含類派生的當前程式集或類型。
l private 訪問僅限於包含類型。
7. sealed 修飾符有什麼特點
sealed 修飾符可以應用於類、執行個體方法和屬性。密封類不能被繼承。密封方法會重寫基類中的方法,但其本身不能在任何衍生類別中進一步重寫。當應用於方法或屬性時,sealed 修飾符必須始終與 override一起使用。
8.列舉ADO.NET中的共用類和資料庫特定類
共用類
DataSet
DataTable
DataRow
DataColumn
DataRelation
Constraint
DataColumnMapping
DataTableMapping
特定類
(x)Connection
(x)Command
(x)CommandBuilder
(x)DataAdapter
(x)DataReader
(x)Parameter
(x)Transaction
9.執行下面代碼後:
String strTemp ="abcdefg 某某某";
Int i=System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j=strTemp.Length;
問:
i=?
j=?
i=(14 ) ;j=(11 ) 中文兩個位元組
10.C#中,string str = null 與 string str ="",請盡量用文字說明區別。
string str =""初始化對象分配空間
而string str=null初始化對象
11.詳述.NET裡class和struct的異同
結構與類共用幾乎所有相同的文法,但結構比類受到的限制更多:
儘管結構的靜態欄位可以初始化,結構執行個體欄位聲明還是不能使用初始值設定項。
結構不能聲明預設建構函式(沒有參數的建構函式)或解構函式。
結構的副本由編譯器自動建立和銷毀,因此不需要使用預設建構函式和解構函式。實際上,編譯器通過為所有欄位賦予預設值(參見預設值表)來實現預設建構函式。結構不能從類或其他結構繼承。
結構是實值型別 -- 如果從結構建立一個對象並將該對象賦給某個變數,變數則包含結構的全部值。複製包含結構的變數時,將複製所有資料,對新副本所做的任何修改都不會改變舊副本的資料。由於結構不使用引用,因此結構沒有標識 -- 具有相同資料的兩個實值型別執行個體是無法區分的。C# 中的所有實值型別本質上都繼承自 ValueType,後者繼承自 Object。
編譯器可以在一個稱為裝箱的過程中將實值型別轉換為參考型別。
結構具有以下特點:
l 結構是實值型別,而類是參考型別。
l 向方法傳遞結構時,結構是通過傳值方式傳遞的,而不是作為引用傳遞的。
l 與類不同,結構的執行個體化可以不使用 new 運算子。
l 結構可以聲明建構函式,但它們必須帶參數。
l 一個結構不能從另一個結構或類繼承,而且不能作為一個類的基。所有結構都直接繼承自 System.ValueType,後者繼承自 System.Object。
l 結構可以實現介面。
l 在結構中初始化執行個體欄位是錯誤的。
12.什麼叫應用程式定義域?什麼是Managed 程式碼?什麼是強型別系統?什麼是裝箱和拆箱?什麼是重載?CTS、CLS和CLR分別作何解釋?
應用程式定義域
應用程式定義域為安全性、可靠性、版本控制以及卸載程式集提供了隔離邊界。應用程式定義域通常由運行庫宿主建立,運行庫宿主負責在運行應用程式之前引導公用語言運行庫。應用程式定義域提供了一個更安全、用途更廣的處理單元,公用語言運行庫可使用該單元提供應用程式之間的隔離。
Managed 程式碼
使用基於公用語言運行庫的語言編譯器開發的代碼稱為Managed 程式碼;Managed 程式碼具有許多優點,例如:跨語言整合、跨語言異常處理、增強的安全性、版本控制和部署支援、簡化的組件互動模型、調試和分析服務等。
裝箱和拆箱
裝箱和拆箱使實值型別能夠被視為對象。對實值型別裝箱將把該實值型別打包到 Object 參考型別的一個執行個體中。這使得實值型別可以儲存於記憶體回收堆中。拆箱將從對象中提取實值型別。
重載
每個類型成員都有一個唯一的簽名。方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成。只要簽名不同,就可以在一種類型內定義具有相同名稱的多種方法。當定義兩種或多種具有相同名稱的方法時,就稱作重載。
CTS一般型別系統 (common type system)
一種確定公用語言運行庫如何定義、使用和管理類型的規範。
CLR公用語言運行庫
.NET Framework 提供了一個稱為公用語言運行庫的運行時環境,它運行代碼並提供使開發過程更輕鬆的服務。
CLSCommon Language Specification
要和其他對象完全互動,而不管這些對象是以何種語言實現的,對象必須只向調用方公開那些它們必須與之互用的所有語言的通用功能。為此定義了Common Language Specification (CLS),它是許多應用程式所需的一套基礎語言功能。
強型別
C# 是強型別語言;因此每個變數和對象都必須具有宣告類型。
13.實值型別和參考型別的區別?
基於實值型別的變數直接包含值。將一個實值型別變數賦給另一個實值型別變數時,將複製包含的值。這與參考型別變數的賦值不同,參考型別變數的賦值只複製對對象的引用,而不複製對象本身。
所有的實值型別均隱式派生自 System.ValueType。
與參考型別不同,從實值型別不可能派生出新的類型。但與參考型別相同的是,結構也可以實現介面。
與參考型別不同,實值型別不可能包含 null 值。然而,可空類型功能允許將 null 賦給實值型別。
每種實值型別均有一個隱式的預設建構函式來初始化該類型的預設值。
實值型別主要由兩類組成:結構、枚舉
結構分為以下幾類:Numeric(數值)類型、整型、浮點型、decimal、bool、使用者定義的結構。
參考型別的變數又稱為對象,可儲存對實際資料的引用。聲明參考型別的關鍵字:class、interface、delegate、內建參考型別: object、string
14.如何理解委託
委託類似於 C++ 函數指標,但它是型別安全的。
委託允許將方法作為參數進行傳遞。
委託可用於定義回調方法。
委託可以連結在一起;例如,可以對一個事件調用多個方法。
方法不需要與委託簽名精確匹配。有關更多資訊,請參見協變和逆變。
C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。
15.C#中的介面和類有什麼異同。
異:
不能直接執行個體化介面。
介面不包含方法的實現。
介面、類和結構可從多個介面繼承。但是C# 只支援單繼承:類只能從一個基類繼承實現。
類定義可在不同的源檔案之間進行拆分。
同:
介面、類和結構可從多個介面繼承。
介面類似於抽象基類:繼承介面的任何非抽象類別型都必須實現介面的所有成員。
介面可以包含事件、索引器、方法和屬性。
一個類可以實現多個介面。
16.ASP.net的身分識別驗證方式有哪些
Windows 身分識別驗證提供者
提供有關如何將 Windows 身分識別驗證與 Microsoft Internet 資訊服務 (IIS) 身分識別驗證結合使用來確保 ASP.NET 應用程式安全的資訊。
Forms 身分識別驗證提供者
提供有關如何使用您自己的代碼建立應用程式特定的登入表單並執行身分識別驗證的資訊。使用 Forms 身分識別驗證的一種簡便方法是使用 ASP.NET 成員資格和 ASP.NET 登入控制項,它們一起提供了一種只需少量或無需代碼就可以收集、驗證和系統管理使用者憑據的方法。
Passport 身分識別驗證提供者
提供有關由 Microsoft 提供的集中驗證服務的資訊,該服務為成員網站提供單一登入和核心配置
17.活動目錄的作用
Active Directory儲存了有關網路對象的資訊,並且讓管理員和使用者能夠輕鬆地尋找和使用這些資訊。Active Directory使用了一種結構化的資料存放區方式,並以此作為基礎對目錄資訊進行合乎邏輯的分層組織。
18.解釋一下UDDI、WSDL的意義及其作用
UDDI
統一描述、發現和整合協議(UDDI, Universal Description, Discovery and Integration)是一套基於Web的、分布式的、為Web服務提供的資訊註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web服務註冊以使得別的企業能夠發現的訪問協議的實現標準。UDDI 提供了一組基於標準的規範用於描述和探索服務,還提供了一組基於網際網路的實現。
WSDL
WSDL描述Web服務的公用介面。這是一個基於XML的關於如何與Web服務通訊和使用的服務描述;
l 服務 URL 和命名空間
l 網路服務的類型(可能還包括 SOAP 的函數調用,正像我所說過的,WSDL 足夠自如地去描述網路服務的廣泛內容)
l 有效函數列表
l 每個函數的參數
l 每個參數的類型
l 每個函數的傳回值及其資料類型
19.什麼是SOAP
SOAP(Simple Object Access Protocol )簡易物件存取通訊協定 (SOAP)是在分散或分布式的環境中交換資訊並執行遠端程序呼叫的協議,是一個基於XML的協議。使用SOAP,不用考慮任何特定的傳輸協議(最常用的還是HTTP協議),可以允許任何類型的對象或代碼,在任何平台上,以任何一直語言相互連信。
SOAP 是一種輕量級協議,用於在分散型、分布式環境中交換結構化資訊。 SOAP 利用 XML 技術定義一種可擴充的訊息處理架構,它提供了一種可通過多種底層協議進行交換的訊息結構。 這種架構的設計思想是要獨立於任何一種特定的編程模型和其他特定實現的語義。
SOAP 定義了一種方法以便將 XML 訊息從 A 點傳送到 B 點。 為此,它提供了一種基於 XML 且具有以下特性的訊息處理架構:1) 可擴充,2) 可通過多種底層網路通訊協定使用,3) 獨立於編程模型。
20.如何部署一個ASP.net頁面
VS 2005和VS 2003都有發布機制。2003發行就緒然後再複製部署。
VS2005基本上可以直接部署到對應位置。
21.如何理解.net中的記憶體回收機制
.NET Framework 的記憶體回收行程管理應用程式的記憶體配置和釋放。每次您使用 new 運算子建立對象時,運行庫都從託管堆為該對象分配記憶體。只要託管堆中有地址空間可用,運行庫就會繼續為新對象分配空間。但是,記憶體不是無限大的。最終,記憶體回收行程必須執行回收以釋放一些記憶體。記憶體回收行程最佳化引擎根據進行中的分配情況確定執行回收的最佳時間。當記憶體回收行程執行回收時,它檢查託管堆中不再被應用程式使用的對象並執行必要的操作來回收它們佔用的記憶體。