C# 4.0初探

C#新增了dynamic关键字,正因为这一个小小的关键字,C#动态特性向前迈进 了一大步。

dynamic是一个类型关键字,声明为dynamic的类型与" 静态类型"(这里的静态类型是指编译时确定的类型,下同)相比最大的特 点它是"动态类型",它会运行时尝试调用方法,这些方法的存在与否 不是在编译时检查的,而是在运行时查找,如果方法存在并且参数正确,会正常 调用,否则会抛出Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 异常。

看一个最简单的示例:

using System;

namespace Xianfen.Net.TestDynamic
{
    class Program
    {
        static void Main()
        {
            dynamic d = Console.Out;
            dynamic a;
            a = new Int32();
            int b = a;
            a++;
            a--;

            d.WriteLine ("http://www.xianfen.net/");
            d.WriteLine(d.GetType());
            d.writeln("test"); //抛出 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException异常
        }
    }
}

对dynamic类型的操作只能有以下几种:

·赋值

·方法调用

·自增

·自减

·接受"静态类型"的构造器创建的对象

时间: 2024-11-08 18:53:58

C# 4.0初探的相关文章

Samba 2.2.0初探(2)

编辑smbpasswd文件从中删除不必要的账号以防止安全隐患,然后用以下命令添加新samba用户: bsd# /usr/local/samba/bin/smbpasswd -a sambauser 好,我们现在就可以用这份缺省的配置文件进行试运行: bsd# /usr/local/samba/bin/smbd -D ; /usr/local/samba/bin/nmbd -D 这时请查看/usr/local/samba/var/log.smbd文件有没有出错信息,运气好的话开始测试连接: bsd

C#4.0初探:Optional and named parameters

Optional and named parameters特性在有些场合提供很大的方便,特别是Office开发中可以告别一坨System.Reflection.Missing了.这里简单了解一下C#4.0中的Optional and named parameters. 在VS2010 CTP中的C#4.0编译器调试通过,正式版可能会有些变化. 1.使用示例 class Program { static void Main(string[] args) { Test t = new Test();

C#4.0初探:dynamic 关键字

C#新增了dynamic关键字,正因为这一个小小的关键字,C#动态特性向前迈进了一大步.dynamic是一个类型关键字,声明为dynamic的类型与"静态类型"(这里的静态类型是指编译时确定的类型,下同)相比最大的特点它是"动态类型",它会运行时尝试调用方法,这些方法的存在与否不是在编译时检查的,而是在运行时查找,如果方法存在并且参数正确,会正常调用,否则会抛出Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

Swift 2.0初探: 值得注意的新特性

转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引入了很多新的特性,以帮助开发者能更快,更简单的构建应用.我在这里也说道说道Swift 2.0中值得大家注意的新特性. guard语句 guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么.但与if语句不同的是,guard语句只会

艾伟:C#4.0初探:dynamic 关键字

C#新增了dynamic关键字,正因为这一个小小的关键字,C#动态特性向前迈进了一大步.dynamic是一个类型关键字,声明为dynamic的类型与"静态类型"(这里的静态类型是指编译时确定的类型,下同)相比最大的特点它是"动态类型",它会运行时尝试调用方法,这些方法的存在与否不是在编译时检查的,而是在运行时查找,如果方法存在并且参数正确,会正常调用,否则会抛出Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

百度map 3.0初探

1.简介     在使用百度地图SDK为您提供的各种LBS能力之前,您需要获取百度地图移动版的开发密钥,该密钥与您的百度账户相关联.因此,您必须先有百度帐户,才能获得开发密钥.并且,该密钥与您创建的过程名称有关,具体流程请参考如下介绍.     Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key     注意:     1. 为了给用户提供更安全的服务,Android SDK自v2.1.3版本开始采用了全新的Key验证体系.因此,当您选择使用v2.1

avd空白-我新装的Android Studio2.0中为何模拟器中是空白?求解决。

问题描述 我新装的Android Studio2.0中为何模拟器中是空白?求解决. 希望给出明确解释,并流图说明! 我完全新装的从Android官网下载的... 解决方案 Android Studio 2.0新模拟器尝鲜Android模拟器2.0初探 解决方案二: http://www.oschina.net/question/2471276_2134084 解决方案三: 是不是没有镜像文件啊 解决方案四: 要先创建 下载系统 解决方案五: 需要吗?我有,要的话回我

互动营销遭遇“参与疲劳”?

今天收到第六期<http://www.aliyun.com/zixun/aggregation/8323.html">销售与市场>(营销版)的样刊,首先吸引我的眼球的不是我自己的文章<3G时代:无线营销,无限可能>,而是封面上排在我文章下面的<"互动营销"遭遇"参与疲劳">这个系列的文章. "太复杂了,我怕麻烦"."参与过,但是坚持不下去"."无聊".&q

初探C# 3.0

C#3.0已经推出好一段时间了,由于种种原因,一直没有去学习,这两天在园 子中看到老赵的拯救C# 2.0,但是我们真做的到吗?.里面提到了些C#3.0的新 特性和优势.勾起了我对3.0的兴趣,初探学习一下,分享给新手. 在 C#2.0中,微软给我们带来了一些新的特性,例如泛型,匿名委托等.然而,这 些新的特性多多少少会给人一种从别的语言中"抄"来的感觉(例如 泛型类似C++的模板,一些特性类似Java中的一些东西).但是在C#3.0中,微软 给我带来的一些新特性可能是以前所有开发语言都