菜单

行使dynamic来简化反射完成,调用钦定方法或构造函数

2019年5月15日 - 金沙编程资讯

 

 public class DynamicSample

    {

        public string Name { get; set; }

        public int Add(int a, int b)

        {

            return a + b;

        }

    }

 public partial class DynamicPage : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            //普通的反射做法

            DynamicSample dynamicSample = new DynamicSample();

            var addMethod = typeof(DynamicSample).GetMethod("Add");

            int res = (int)addMethod.Invoke(dynamicSample, new object[] { 1, 2 });



            //dynamic的做法,简洁,推荐

            dynamic dynamicSample2 = new DynamicSample();

            int res2 = dynamicSample2.Add(1, 2); //Add不会智能提示出来

        }

    }

接纳dynamic 简化反射

 

dynamic
被编写翻译后,实际是2个object类型,只但是编写翻译器对dynamic做极其处理,将品种检查放到了运转期。

那从VS的编写翻译器窗口能够看出来,var
注明的变量在VS中有智能提醒,因为VS能估算出来实际类型;dynamic注明的变量未有智能提示。

运用dynamic还有一个亮点就是,比向来不优化过的反光性能好,跟优化过的反射质量11分,但代码整洁度高,小编也是贴了代码并贴出运转结果而已,未有作过多的介绍,所以这里作罢了。

var是编写翻译器给大家的语法糖,编写翻译期会同盟出实际类型并且替换该变量的宣示。

dynamic是Framework四.0的新特征,dynamic的面世让C#怀有了弱语言类型的表征,编写翻译器在编写翻译的时候,不再对品种实行反省,不会报错,然则运转时1旦实践的是不设有的性情或然措施,运维程序依然会抛出RuntimeBinderException十分。

var 与 dynamic 的区别

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图