【发布时间】:2012-07-31 18:26:43
【问题描述】:
我在方法中有以下代码:
string username = (string)context["UserName"];
string un = (string)context["UserName"];
问题是第一个字符串“用户名”没有被分配,而第二个被分配了。
为了更奇怪,当我在第一行之后停止调试并将该行复制到立即窗口,删除变量类型声明时,它被成功分配。
我已经全部重建并检查了似乎没问题的项目属性。
context 变量是一个System.Configuration.SettingsContext,它是一个哈希表。更具体地说,我正在实现一个配置文件提供程序,GetPropertyValues 方法。
我正在使用 VS 2012 和 .NET 4.5
编辑:
我在我的项目中使用代码契约,它使用编译时代码注入进行运行时检查。我禁用了它,一切正常。我将尝试逐一删除合同,以找出导致问题的合同。
【问题讨论】:
-
不可能是变量名。你试过交换作业的顺序吗?
-
您确定没有在范围内的其他地方定义另一个
username变量吗? -
@Douglas 不仅如此。我也尝试过为一个对象和之后的字符串赋值,但没有运气。
-
提供上下文(类、方法、主要库)。现在甚至不清楚这些是本地变量还是字段。
-
对于想知道的人:这确实是代码合同中的一个错误,我在下面复制了它。
标签: c# .net variable-assignment code-contracts