网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
Visual Studio的调试禁区
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
今天在调试同事的一段代码时,发现有一段代码调试时怎么也进不去,难道遇到了Visual Studio的调试禁区?

简化后的代码如下:
    class Program
    {
        static void Main(string args)
        {
            SimpleClass simpleClass = new SimpleClass();
            string myString = simpleClass.OneField;
        }
    }

    public class SimpleClass
    {
        private string _oneField = string.Empty;

        public string OneField
        {
            get
            {
                if (_oneField.Length == 0)
                {
                    _oneField = GetMyString();
                }

                return _oneField;
            }
        }

        private string GetMyString()
        {
            return "just for test~";
        }
    }无法调试的代码即“_oneField = GetMyString();”这一行。

大家可以自行调试,会发现是因为_oneField这个变量总是被莫名其妙的赋上值了,但明明我们还没有给它赋值……

和同事讨论过后,还是没有得出明确的结论,只是推测可能是因为Visual Studio在调试的过程中,自动扫描对象中的属性,然后自行运行属性的get操作~

不知道大家有没有遇到这种情况,虽然最终通过把OneField属性改写成函数解决了这个问题,但还是有些不爽,难道在Visual Studio就真的没有办法调试如上代码?

更新:
在Angel Lucifer的提醒下,我重新试了下,进一步发现了问题所在:
如果在“SimpleClass simpleClass = new SimpleClass();”这一行加上断点,然后逐行调试,是无法到达“_oneField = GetMyString();”这一行的;
但如果直接F5,则可以到达“_oneField = GetMyString();”这一行。。。

进一步更新:
本以为以上发现的问题不会影响程序运行的结果,但却意外发现有时也会影响到程序最终运行的结果——

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号