System 命名空間是 .NET 開發的基石。本文系統梳理六大核心類型的關鍵成員、特殊行為與實戰用法,建立扎實的框架認知。
代表型別宣告 (類別、介面、陣列、泛型…)。取得 Type 物件兩大途徑:
Type t1 = Type.GetType("System.String");
Type t2 = typeof(string);
搭配反射可動態叫用方法:
MethodInfo mi = t.GetMethod("Substring", new[] { typeof(int), typeof(int) });
object result = mi.Invoke("Hello, World!", new object[] { 7, 5 });
// result = "World"
C# object 關鍵字為其別名。核心虛擬方法:
Equals / ReferenceEquals:值相等 vs 參考相等。GetHashCode:雜湊碼,字典鍵值基礎。GetType:取得確切執行期型別。Finalize:完成器,GC 呼叫釋放非受控資源。ToString:預設回傳型別名稱,建議覆寫。字串一旦建立即不可變更,任何「修改」操作皆產生新實例。高頻操作建議使用 StringBuilder。重要特性:
string.Intern 可手動加入。String.Compare、String.Equals 提供文化特性感知比較。Split、Join、Format 等靜態工具方法豐富。提供靜態工廠與操作方法:CreateInstance、Sort、BinarySearch、Copy、Resize、Find、ForEach 等。陣列實作 IList、ICollection、IEnumerable。
標準輸入/輸出/錯誤流:In、Out、Error (皆為 TextReader/TextWriter)。WriteLine、ReadLine、ReadKey 常用。主控台程式可回傳 int 結束碼 (0 成功、非 0 失敗),父進程可透過 Process.ExitCode 讀取。
靜態唯讀屬性提供機器、作業系統、進程、使用者等資訊:
| 屬性 | 用途 |
|---|---|
MachineName | 本機 NetBIOS 名稱 |
OSVersion | 作業系統版本與平台識別 |
ProcessorCount | 邏輯處理器數量 |
TickCount | 開機經過毫秒數 (約 24.9 天溢位) |
UserName / UserDomainName | 目前登入使用者 |
NewLine | 平台換行字串 (\r\n 或 \n) |
GetCommandLineArgs() | 啟動命令列參數陣列 |
Exit(code) | 立即終止進程並回傳代碼 |