GO To Definition的背後操作【VS2015 C#】

來源:互聯網
上載者:User

標籤:

使用VS開發U3D項目時,去察看某個變數的聲明,比如某組件的gameObject變數,會看到如下代碼

一看似乎有點暈,這代碼什麼意思啊,就一個 public GameObject gameObject {get;}

這有點像屬性的簡潔聲明:

但事實是這樣的嗎? 經過測試,並非如此

寫一個小程式來驗證下就知道了。

首先寫一個DLL程式,然後寫一個測試程式來引用這個DLL,在測試程式中對變數使用go to definition,我們看到,不論dll中定義的屬性有多麼複雜,go to definition總是只能看到簡單的 set; get;

DLL程式碼如下:

public class IMsg    {        public virtual void Print() { }    }   sealed public class xMsg : IMsg    {        string msg;        public string Msg        {            set            {                if(msg.Length == 0)                {                    msg = "init string";                }                else                {                    msg = value;                }            }            get            {                return msg;            }        }        public sealed override void Print()        {            Console.WriteLine(msg);        }

引用DLL的測試程式碼如下:

    class Program    {        static void Main(string[] args)        {            xMsg ox = new xMsg();            ox.Msg = "hello";            ox.Print();        }    }

對 xMsg使用 go to definition 我們看到如下代碼:

namespace ClassLibrary1{    public sealed class xMsg : IMsg    {        public xMsg();        public string Msg { get; set; }        public sealed override void Print();    }}

 我們去嘗試開啟這個檔案所在的位置時得到如下,原來是VS產生的臨時檔案。

這說明了這種檔案只是VS給我們預覽代碼定義用的臨時組建檔案,並不是可執源碼,這樣的檔案在項目中是不能正常執行的,因為它與我們的程式原檔案已經相差太多。

GO To Definition的背後操作【VS2015 C#】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.