WEB开发网
开发学院软件开发C语言 C#4.0初探:dynamic 关键字 阅读

C#4.0初探:dynamic 关键字

 2009-05-29 08:31:21 来源:WEB开发网   
核心提示: 这里会发现两个问题:赋值给dynamic的值赋给object类型,对于值类型会不会执行同样的操作,C#4.0初探:dynamic 关键字(5),会执行装箱操作吗;编译器生成的静态类<Main>o__SiteContainer0的静态字段<>p__Site1应该是缓存

这里会发现两个问题:赋值给dynamic的值赋给object类型,对于值类型会不会执行同样的操作,会执行装箱操作吗;编译器生成的静态类<Main>o__SiteContainer0的静态字段<>p__Site1应该是缓存作用。这两个问题稍后验证。

1)对值类型进行的操作

如下代码:

using System;

namespace Xianfen.Net.TestDynamic
{
    class Program
    {
        static void Main()
        {
            dynamic d = 5;
            d.ToString();
        }
    }
}

反编译代码:

internal class Program
{
    // Methods
    private static void Main()
    {
        object d = 5;
        if (<Main>o__SiteContainer0.<>p__Site1 == null)
        {
            <Main>o__SiteContainer0.<>p__Site1 = CallSite<Action<CallSite, object>>.
Create(new CSharpInvokeMemberBinder(CSharpCallFlags.None, "ToString", typeof(Program),
null, new CSharpArgumentInfo[] { new CSharpArgumentInfo(CSharpArgumentInfoFlags.None, null) }));
        }
        <Main>o__SiteContainer0.<>p__Site1.Target(<Main>o__SiteContainer0.<>p__Site1, d);
    }

    // Nested Types
    [CompilerGenerated]
    private static class <Main>o__SiteContainer0
    {
        // Fields
        public static CallSite<Action<CallSite, object>> <>p__Site1;
    }
}

上一页  1 2 3 4 5 6 7  下一页

Tags:初探 dynamic 关键字

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接