1. 程式人生 > >c#基礎回憶(一)

c#基礎回憶(一)

1.c#、.net、asp.net的區別

c#是一種語言

.net是一種平臺,該平臺下包含很多技術,比如:asp.net、ado.net、、、等

asp.net是.net平臺下的開發web程式的技術

c#是.net平臺下的一種開發語言

2.c#中的委託

委託是一個類,它定義了方法的型別,使得可以將方法當作另一個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用If … Else(Switch)語句,同時使得程式具有更好的可擴充套件性。

詳細例子:http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html

3.private、 protected、 public、internal 修飾符的訪問許可權

private : 私有成員, 在類的內部才可以訪問。

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

public: 公共成員,完全公開,沒有訪問限制。

internal:在同一名稱空間內可以訪問。

4.override與過載的區別

過載是方法的名稱相同。引數或引數型別不同,進行多次過載以適應不同的需要

Override是進行基類中函式的重寫。為了適應需要。

5..NET中讀寫資料庫需要用到那些類?他們的作用?

(1)DataSet 用來無連線的儲存多個表的資料,幷包含表與表之間的關聯關係

(2)DataTable 用來儲存一個表的資料

(3)SqlConnection 用來建立一個到資料庫的連線

(4)SqlCommand 用來執行SQL語句

(5)SqlDataReader 用來順序讀取資料

(6)SqlDataAdapter 用來將資料填充到DataSet或DataTable

6.在C#中,string str = null 與 string str = “” 的區別。

string   str= " ",表示一個空串,被實列化了,佔用了記憶體空間,
string   str=null,表示一個空引用,沒有佔用了空間,

7.類(class)與結構(struct)的異同?

1. 值型別與引用型別
結構是值型別:值型別在堆疊上分配地址,所有的基型別都是結構型別,例如:int 對應System.int32 結構,通過使用結構可以建立更多的值型別
類是引用型別:引用型別在堆上分配地址
堆疊的執行效率要比堆的執行效率高,可是堆疊的資源有限,不適合處理大的邏輯複雜的物件。所以結構處理作為基型別對待的小物件,而類處理某個商業邏輯
因為結構是值型別所以結構之間的賦值可以建立新的結構,而類是引用型別,類之間的賦值只是複製引用
注:
1.雖然結構與類的型別不一樣,可是他們的基型別都是物件(object),c#中所有型別的基型別都是object
2.雖然結構的初始化也使用了New 操作符可是結構物件依然分配在堆疊上而不是堆上,如果不使用“新建”(new),那麼在初始化所有欄位之前,欄位將保持未賦值狀態,且物件不可用
2.繼承性
結構:不能從另外一個結構或者類繼承,本身也不能被繼承,雖然結構沒有明確的用sealed宣告,可是結構是隱式的sealed .
類:完全可擴充套件的,除非顯示的宣告sealed 否則類可以繼承其他類和介面,自身也能被繼承
注:雖然結構不能被繼承 可是結構能夠繼承介面,方法和類繼承介面一樣 。

8.面向物件的語言具有封裝性,多型性,繼承性。

9.c#是否可以繼承String類?

String類是final類故不可以繼承。

10.陣列有沒有length()這個方法? String有沒有length()這個方法?

陣列沒有length()這個方法,有length的屬性。

String有length()這個方法。

11.C#可否對記憶體進行直接的操作?

不可以進行直接操作,只是可以訪問。unsafe下是可以的。是不受CLR管理的。當然僅限於基本型別。

自行百度CLR

12.<%# %> 和 <% %> 有什麼區別?

< %#... %>: 是在繫結控制元件DataBind()方法執行時被執行,用於資料繫結
如: < %# Container.DataItem("tit") %>


<  %= %>: 在程式執行時被呼叫,可以顯示後臺變數值
如:*.aspx中: < %= Title %>
   *.cs中: public string Title ="title";

13.在.net(C# or vb.net)中,Appplication.Exit 還是 Form.Close有什麼不同?

一個是退出整個應用程式,一個是關閉其中一個form。

14..net的錯誤處理機制是什麼?

.net錯誤處理機制採用try->catch->finally結構,發生錯誤時,層層上拋,直到找到匹配的Catch為止。

15.在.Net中,類System.Web.UI.Page 可以被繼承麼?

可以。

16.在.Net託管程式碼中我們不用擔心記憶體漏洞,這是因為有了______?

GC。

17.什麼是code-Behind技術。

ASPX,RESX和CS三個字尾的檔案,這個就是程式碼分離.實現了HTML程式碼和服務

器程式碼分離.方便程式碼編寫和整理.

18.DataReader與Dataset有什麼區別?

dataset表示一個數據集,是資料在記憶體中的快取。 可以包括多個表
DatSet 連線
資料庫時是非面向連線的。把表全部讀到Sql中的緩衝池,並斷開於資料庫的連線

詳細講解:http://blog.csdn.net/stypace/article/details/10557755

19.Session有什麼重大BUG,微軟提出了什麼方法加以解決?

由於IIS中有程序回收機制,系統繁忙的話Session會丟失,可以用stateserver或SQL Server資料庫的方式儲存Session不過這種方式比較慢,而且無法補貨Session的END事件。