栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C#基础:dynamic类型

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#基础:dynamic类型

dynamic类型是.NET 4.0引入的一个新的概念,它的目的是增强与python等动态语言的互操作性。由于动态的原因,使得dynamic类型的变量只有在运行时才能被确定具体类型,而编译器也会绕过对这种类型的语法检查。其实这样做是危险的。

下面的代码演示了在C#中如何使用dynamic类型:

123456789101112131415class Person{    public string Name { get; set; }class Program{    static void Main(string[] args)    {        dynamic c = new Person();        c.Name = "abc";        c.Age = 30;        Console.WriteLine(c.Name);    }}

这段代码是可以编译通过的,尽管Person类中并没有定义Age这个公有属性,因为c的类型是在运行时动态绑定的,因此,执行这段代码时就会出现错误:

由于编译器会忽略由dynamic定义的变量,因此它能够用来解决一些与强类型“冲突”的问题。不知您是否还记得我之前写的一篇关于泛型的接口抽象的文章。那么,我们可以使用dynamic变量来解决这篇文章中提出的问题。代码如下:



public interface IXRefData{    // TODO: add definition here         public class XRefComponent    where Tdata: IXRefData{    public void Update() { }public class XRefPickdata: IXRefData { } public class XRefPackdata: IXRefData { } public class XRefUpdator{    private List components = new List();    public List Components    {        get { return components; }        set { components = value; }    }class Program{    static void Main(string[] args)    {        XRefUpdator updator = new XRefUpdator();                 // 现在就可以将两种完全不同的类型添加到Component列表中了         updator.Components.Add(            new XRefComponent());         updator.Components.Add(            new XRefComponent());    }}

最后提一句,使用dynamic的程序最好做一下单体测试,因为它可能带来更多的运行时错误。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/231626.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号