Javascript 是一個動態語言。請看下面這一段 script
1: <script type="text/javascript">
2: function Test() {
3: var o = new Object();
4: o.Name = "aaa";
5: o.Id = 3;
6: o.Show = function () { alert("Id = " + o.Id + ", Name = " + o.Name) };
7: o.Show();
8: }
9: Test();
10: </script>
而 C# 4.0 呢?有沒有相對應的寫法呢?有的!將 var 改成 dynamic,而 Object 改成 ExpandoObject。而沒有回傳值的函數,就是 Action。如下。
1: static void Main(string[] args)
2: {
3: dynamic o = new ExpandoObject();
4: o.Name = "aaa";
5: o.Id = 3;
6: o.Show = new Action(() => Console.WriteLine("Id = " + o.Id + ", Name = " + o.Name));
7: o.Show();
8: }
是不是很類似呢?原來,C# 3.0時, lamda expression 就是採用了動態語言的特性,但使用靜態語言的編譯器就達到了動態語言的效果。
沒有留言:
張貼留言