字符串变量名称 Date 在调试器中的行为很奇怪
Posted
技术标签:
【中文标题】字符串变量名称 Date 在调试器中的行为很奇怪【英文标题】:String variable name Date acts weird in debugger 【发布时间】:2015-11-07 10:49:05 【问题描述】:谁能告诉我为什么调试器将我的名为Date
的string
变量作为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 在调试器中的行为很奇怪的主要内容,如果未能解决你的问题,请参考以下文章
UISegmentedControl 在 UITableView Header 上的行为很奇怪