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

C#4.0初探:dynamic 关键字

 2009-05-29 08:31:21 来源:WEB开发网   
核心提示: 可见确实对值类型进行了装箱操作,效率可想而知,C#4.0初探:dynamic 关键字(6),2)编译器生成的缓存类代码如下:using System; namespace Xianfen.Net.TestDynamic { class Program { static void Main(

可见确实对值类型进行了装箱操作,效率可想而知。

2)编译器生成的缓存类

代码如下:

using System;

namespace Xianfen.Net.TestDynamic
{
    class Program
    {
        static void Main()
        {
            dynamic d = 5;
            d.ToString();
            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);
        if (<Main>o__SiteContainer0.<>p__Site2 == null)
        {
            <Main>o__SiteContainer0.<>p__Site2 = CallSite<Action<CallSite, object>>.Create(new CSharpInvokeMemberBinder(CSharpCallFlags.None, "ToString", typeof(Program), null, new CSharpArgumentInfo[] { new CSharpArgumentInfo(CSharpArgumentInfoFlags.None, null) }));
        }
        <Main>o__SiteContainer0.<>p__Site2.Target(<Main>o__SiteContainer0.<>p__Site2, d);
    }

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

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

Tags:初探 dynamic 关键字

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