Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;索引超出了数组的边界;检查非数组变量时_C# - Fatal编程技术网

C# &引用;索引超出了数组的边界;检查非数组变量时

C# &引用;索引超出了数组的边界;检查非数组变量时,c#,C#,我有一个类“地址”,上面有以下检查: if(thisAddress == null) thisAddress = new Address(); 当代码运行时,我在第一行得到“索引超出了数组的边界”。如果删除If语句,第二行就会出现错误 这个类是从Linq到SQL的,但我对它进行了扩展。这以前是有效的,我不知道为什么会突然发生。thisAddress是UserControl中的私有变量 有什么想法吗?代码与二进制文件不同步。 尝试重新编译包含usercontrol的程序集 数据库中是否有任

我有一个类“地址”,上面有以下检查:

if(thisAddress == null)
   thisAddress = new Address();
当代码运行时,我在第一行得到“索引超出了数组的边界”。如果删除If语句,第二行就会出现错误

这个类是从Linq到SQL的,但我对它进行了扩展。这以前是有效的,我不知道为什么会突然发生。thisAddress是UserControl中的私有变量


有什么想法吗?

代码与二进制文件不同步。
尝试重新编译包含usercontrol的程序集


数据库中是否有任何您认为会破坏LINQ到SQL映射的更改?

通常,LINQ语句是延迟执行的,或者在使用它们时执行,而不是在编写链接时执行。因此,完全有可能在If语句后面执行的代码实际上就是故障所在

如果是这种情况,那么您可以尝试单步执行该语句(可以对thisAddress类使用相等检查),调试器应该向您显示正在执行的linq

另一种方法,也是我主要使用的方法,是将调试器设置为在抛出异常时中断,而不是在未处理异常时中断,这是跟踪此类问题的一种非常好的方法。(在VS中抛出调试器/异常时勾选)


希望这能帮助你解决这个问题。显然我漏掉了一条重要的信息。代码位于控件属性的get{}部分内。错误是代码中的另一行(我使用的是split()),但调试器指向get{}语句的第一行。

thisAddress是什么类型的变量?