国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

var和dynamic的區別及如何正確使用dynamic?

2019-11-14 13:36:16
字體:
來源:轉載
供稿:網友

  C#中的很多關鍵詞用法比較容易混淆,var和dynamic就是其中一組,他們都可以申明動態類型的變量,但是本質上他們還是有不少區別的。var 在編譯階段已經確定類型,在初始化時候,必須提供初始化的值,而dynamic則可以不提供,它是在運行時才確定類型。

 1 //var 在編譯階段已經確定類型 2 // var varError; 3 var isIntType = 3; 4 isIntType.ToString(); 5 //dynamic在編譯期間不進行任何 6 //的類型檢查,而是將類型檢查放到 7 //了運行期 8 dynamic dyn = 3; 9 // dynamic dynOk;10 dyn = "hello world";11 //error 字符串沒有 [ fn不存在的方法 ] 的方法12 //但在語法檢查時通過,不會提示語法錯誤13 var s = dyn.fn不存在的方法();//runtime error

  由于dynamic在運行時才檢查類型,所以有時候會出現錯誤,因此使用它必須得法,那么何時使用它比較方便呢?我們先定義一個Person類,然后用反射進行動態調用起Talk方法:

1     class Person2     {3         public void Talk(string msg)4         {5             MessageBox.Show(msg);6         }7     }
1 //dynamic 在反射時候可以簡化代碼2 System.Type t = typeof(Person);3 var obj = Activator.CreateInstance(t, null);4 t.InvokeMember("Talk", System.Reflection.BindingFlags.InvokeMethod, null, obj, new object[] { "hell world!" });

  在反射的時候,傳統的方法的方法調用往往比較繁瑣,而用dyanmic則非常簡化,而且直觀:

1 dynamic obj2 = Activator.CreateInstance(t, null);2 obj2.Talk("hell world!");

   因此,dynamic只要使用得法,還是一個C#一個非常好的特征。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲靖市| 长治县| 丹棱县| 三门峡市| 察哈| 玉环县| 略阳县| 乐平市| 兴安县| 大荔县| 新巴尔虎左旗| 通辽市| 龙游县| 馆陶县| 木里| 贞丰县| 通城县| 林甸县| 北川| 汝南县| 越西县| 财经| 平顶山市| 仁布县| 武威市| 黔东| 大化| 东至县| 江阴市| 宁海县| 登封市| 沾益县| 栖霞市| 农安县| 石泉县| 临泉县| 福贡县| 五家渠市| 石景山区| 凌海市| 辛集市|