dynamic 宣告的變數在運行時解析成員調用。編譯期不檢查成員是否存在,運行時若缺失拋出 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException。
dynamic d = Console.Out;
dynamic a = new Int32();
int b = a; // 隱式轉換
a++; a--; // 運算子支援
d.WriteLine("https://example.com");
d.WriteLine(d.GetType());
d.writeln("test"); // 運行時拋出 RuntimeBinderException (大小寫錯誤)
dynamic 視為 object 並發出 CallSite 快取結構。CSharpInvokeMemberBinder 綁定器。這使 C# 擁有類似動態語言的靈活性,同時保留靜態型別優勢於非動態代碼路徑。