如果你的簡歷上面寫“熟悉/了解C#”,那麼你就應該能夠回答下面的這些基礎問題。我將給出自己的簡要答案以供參考。歡迎討論。
value,它的類型和屬性所聲名的類型相同。
在類名後加上一個冒號,再加上基類的名稱。
類之間不支持,接口之間支持。類對接口叫做實現,不叫繼承。
在繼承或間接繼承與這個類的子類中可以訪問。
會,但是不能被訪問。所以看上去他們似乎是不能被繼承的,但實際上確實被繼承了。
在同一個Assembly中,他的訪問級別和public一樣,而跨Assembly訪問時,他的訪問級別同protected一樣。即protected的范圍 + internal的范圍。
兩個,一旦你實現了一個構造函數,C#就不會再提供默認的構造函數了,所以需要手動實現那個無參數構造函數。
System.Object.
重載提供了對一個方法簽名的不同參數調用的實現。覆寫提供了子類中改變父類方法行為的實現。
被virtual修飾的方法可以被子類覆寫。
不能,覆寫方法的簽名必須與被覆寫方法的簽名保持一致,除了將virtual改為override。
不可以,甚至子類中無法訪問父類中的私有方法。
可以,使用關鍵字sealed。
可以,標記這個類為public,並標記這個方法為sealed。
一種不可以被實例化的類。抽象類中一般含有抽象方法,當然也可有具體實現。繼承類只有實現過所有抽象類的抽象方法後才能被實例化。
當這個類中包含抽象方法時,或是該類並沒有完全實現父類的抽象方法時。
只含有共有抽象方法(public abstract method)的類。這些方法必須在子類中被實現。
接口中的方法用來定義對象之間通信的契約,指定接口中的方法為私有或保護沒有意義。他們默認為公有方法。
當然。
這種情況中你可以決定如何實現。當然需要特別得小心。但是在編譯環節是沒有問題的。
接口中所有方法必須是抽象的,並且不能指定方法的訪問修飾符。抽象類中可以有方法的實現,也可以指定方法的訪問修飾符。
不同的參數類型,不同的參數個數,不同的參數順序。
const可以用於局部常量,而readonly,實際是類的initonly字段,顯然不能是局部的。
System.String是不可變的字符串。System.StringBuilder存放了一個可變的字符串,並提供一些對這個字符串修改的方法。