.net面試題目彙總(一)

Abstruct class 與 Interface的區別
相同點:
1)  都不能被初始化;
2)  都支持抽象方法;
不一樣點:
1)  abstract class的成員函數容許有函數體,interface不能
2)  abstract class容許有成員變量,interface不能(interface只能含有事件,委託,函數,屬性,索引器);
3)  abstract class的方法容許含有可見性修飾符,interface不能(默認爲public)
4)  abstract class不能被多重繼承,interface能夠被多重繼承(實現)
5) abstract class 能夠擁有構造函數/靜態構造函數,interface不能夠
 
class 與 Struct的區別
相同點:
1)  它們都是建立對象的模板,用以抽象某類具備通通特徵的對象;他們都包含數據和方法;
2)  它們在使用上沒有太大的區別,除了關鍵字class和struct不一樣;
不一樣點:
1)  Struct是值類型,它在內存中的存儲方式是存儲於堆(heap)上
2)  Class是引用類型,它在內存中的存儲方式是存儲於棧(stack)上
 
Ref, Out, Params的區別
params 關鍵字能夠指定在參數數目可變處採用參數的方法參數。在方法聲明中的 params 關鍵字以後不容許任何其餘參數,而且在方法聲明中只容許一個 params 關鍵字。
Out
這是一個引用傳遞L。
原則一:當一個方法(函數)在使用out做爲參數時,在方法中(函數)對out參數所作的任何更改都將反映在該變量中。
原則二:當但願方法返回多個值時,聲明 out 方法很是有用。使用 out 參數的方法仍然能夠返回一個值。一個方法能夠有一個以上的 out 參數。
原則三:若要使用 out 參數,必須將參數做爲 out 參數顯式傳遞到方法。out 參數的值不會傳遞到 out 參數。
原則四:沒必要初始化做爲 out 參數傳遞的變量,由於out 參數在進入方法(函數)時後清空本身,使本身變成一個乾淨的參數,也由於這個緣由必須在方法返回以前爲 out 參數賦值(只有地址沒有值的參數是不能被.net接受的)。
原則五:屬性不是變量,不能做爲 out 參數傳遞。
原則六:若是兩個方法的聲明僅在 out 的使用方面不一樣,則會發生重載。不過,沒法定義僅在 ref 和 out 方面不一樣的重載。
ref僅僅是一個地址!!!
原則一:當一個方法(函數)在使用ref做爲參數時,在方法中(函數)對ref參數所作的任何更改都將反映在該變量中。
原則二:調用方法時,在方法中對參數所作的任何更改都將反映在該變量中。 原則三:若要使用 ref 參數,必須將參數做爲 ref 參數顯式傳遞到方法。ref 參數的值能夠被傳遞到 ref 參數。 原則四:ref參數傳遞的變量必須初始化,由於ref參數在進入方法(函數)時後仍是它本身,它這個地址指向的仍是原來的值,也由於這個緣由ref參數也能夠在使用它的方法內部不操做。 原則六:若是兩種方法的聲明僅在它們對 ref 的使用方面不一樣,則將出現重載。可是,沒法定義僅在 ref 和 out 方面不一樣的重載。
相關文章
相關標籤/搜索