博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GO To Definition的背后操作【VS2015 C#】
阅读量:6176 次
发布时间:2019-06-21

本文共 1413 字,大约阅读时间需要 4 分钟。

使用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给我们预览代码定义用的临时生成文件,并不是可执源码,这样的文件在项目中是不能正常执行的,因为它与我们的程序原文件已经相差太多。

转载于:https://www.cnblogs.com/timeObjserver/p/5929763.html

你可能感兴趣的文章
Linux基础知识题解答(七)
查看>>
Postfix+Dovecot+LAMP+Extmail搭建web邮件系统(二)
查看>>
路面上的坑--系统API的兼容性
查看>>
Apache的安装及配置
查看>>
常用简单样式表
查看>>
tf.nn.embedding_lookup
查看>>
Alexa 调整网站排名统计方式
查看>>
企业级nginx服务优化合集
查看>>
今日知识共享
查看>>
Android Studio2.3正式版带SDK安装教程
查看>>
linecache
查看>>
接口测试Fiddler实战
查看>>
那个能报警的相机有了新伙伴:海康威视运动相机登场
查看>>
CSVDE批量导入域用户并更改密码和启用
查看>>
NULL与""空字符串的区别
查看>>
OSPF邻居关系建立过程详解
查看>>
JDK10 EA版特性速览
查看>>
超过254个IP,如何规划子网
查看>>
Amoeba新版本MYSQL读写分离配置
查看>>
制作XPE启动光盘的教程
查看>>