Emit學習-基礎篇-HelloWorld

來源:互聯網
上載者:User

mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>按照業界的慣例,我們用一個最簡單的例子——“Hello World"Times New Roman";mso-hansi-font-family:"Times New Roman"'>”,來開始我們的Emitmso-hansi-font-family:"Times New Roman"'>之旅。例子的相關代碼及注釋如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection.Emit;

namespace EmitExamples.HelloWorld
{
    class Program
    {
        /// <summary>
        /// 用來調用動態方法的委託
        /// </summary>
        private delegate void HelloWorldDelegate();

        static void Main(string[] args)
        {
            //定義一個名為HelloWorld的動態方法,沒有傳回值,沒有參數
            DynamicMethod helloWorldMethod = new DynamicMethod("HelloWorld", null, null);

            //建立一個MSIL產生器,為動態方法產生代碼
            ILGenerator helloWorldIL = helloWorldMethod.GetILGenerator();

            //將要輸出的Hello World!字元創載入到堆棧上
            helloWorldIL.Emit(OpCodes.Ldstr, "Hello World!");
            //調用Console.WriteLine(string)方法輸出Hello World!
            helloWorldIL.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }));
            //方法結束,返回
            helloWorldIL.Emit(OpCodes.Ret);

            //完成動態方法的建立,並且擷取一個可以執行該動態方法的委託
            HelloWorldDelegate HelloWorld = (HelloWorldDelegate)helloWorldMethod.CreateDelegate(typeof(HelloWorldDelegate));

            //執行動態方法,將在螢幕上列印Hello World!
            HelloWorld();
        }
    }
}


HelloWorld

mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>這裡我們只是用這個例子讓大家對Emitmso-hansi-font-family:"Times New Roman"'>以及IL"Times New Roman"'>有個直觀的瞭解,其中用到的方法將在以後的章節中具體講解,這裡附帶該程式的源碼下載 HelloWorld"Times New Roman"'>。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.