字符串变量名称 Date 在调试器中的行为很奇怪

Posted

技术标签:

【中文标题】字符串变量名称 Date 在调试器中的行为很奇怪【英文标题】:String variable name Date acts weird in debugger 【发布时间】:2015-11-07 10:49:05 【问题描述】:

谁能告诉我为什么调试器将我的名为Datestring 变量作为DateTime 对象处理?

代码:

public class HourRegistration

    public string Date  get; set; 

查看屏幕截图:

使用 .NET 框架 4.5,VS-2015

谢谢!

更新:

通过尽可能减少代码,我发现了明显的问题。

最小化代码:

namespace ConsoleApplication1

    class Program
    
        static void Main(string[] args)
        
            DoSomething();
        

        public static void DoSomething()
        

            DateTime Date = DateTime.ParseExact("asdasd", "dd/MM/yyyy", CultureInfo.InvariantCulture);
        

        public class HourRegistration
        
            public string Date  get; set; 
        
    

截图:

它是另一个上下文中的不同变量,名称与字符串完全相同,调试器显示了另一个对象的详细信息(基于上下文)

【问题讨论】:

你设置了什么?您是否安装了任何自定义可视化工具?这是一个什么样的应用程序? (如果您可以在控制台应用程序中重现这一点,那将特别有趣。) 我目前无法重现这个 - 老实说,甚至不清楚上下文是什么 - 目前在 Date getter 中停止执行?别的地方? (我想知道它在看哪个实例...) 我正在减少不必要的代码。调试某人的代码。尝试制作一个小型控制台应用程序来隔离问题。 虽然我同意 Visual Studio 在这里可以做得更好,但这并不是什么新鲜事。如果您只是在监视窗口中键入“日期”,也会发生同样的情况。当前背景很重要。 有趣 - 我现在可以重现... 【参考方案1】:

当您在调试模式下查找变量值时,它按名称匹配,而不是按内存地址匹配。

我同意其他人,它可以做得更好,而且我在以前的版本中看到过这个问题(至少与 2013 相比)。

【讨论】:

【参考方案2】:
//There in your above question you are creating a new object with datatype as datetime and variable as Date but this Date is not the one you described in your model.For that you have to do something like below:


HourRegistration model = new HourRegistration ();
     model.Date = DateTime.ParseExact("asdasd", "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString();

//But this code gives an error since you cannot pass a string value to date.It makes no sense.

【讨论】:

以上是关于字符串变量名称 Date 在调试器中的行为很奇怪的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 构建和调试奇怪的行为?

UISegmentedControl 在 UITableView Header 上的行为很奇怪

python中的变量

函数奇怪行为中的JQuery变量

没有固定大小的容器中的垂直和水平居中文本在 Firefox 中表现得很奇怪

C# 在调试器中与正常执行的奇怪行为导致了 Heisenbug