2017-10-16 25 views
-6

我使用此代码来获得一个文件夹C#指数为Windows上的阵列7 X32的

string[] Dbfiles = Directory.GetFiles(c.Path + c.CompanyName + c.ProgramTitle, "*.mdf", SearchOption.TopDirectoryOnly); MessageBox.Show(Dbfiles[Dbfiles.Length-1]); 

工作正常的Windows 7和10 64中的所有MDF文件的范围之外,但它给了我指数外在Windows中越界异常7 X32 我试图

MessageBox.Show(Dbfiles[0]); 

和其他的东西,但它不工作,我用点网框架3.5

的ForEach修复

foreach (string file in Dbfiles) 
      { 
       if (string.IsNullOrEmpty(file)) 
       { 
        //escape 
        continue; 
       } 
       else 
       { 
        c.MdfFilePath = file; 
        break; 
       } 
      } 

回答

0

Directory.GetFiles返回空字符串[],然后你尝试用获得元素 “-1”指数。

只需尝试在访问其元素前检查数组的长度。

+0

我已经尝试过,也与索引为“0”仍然得到相同的错误 – ahmedpio

+0

它是一个空数组,根本没有元素。 *** 0 ***索引 - 第一个元素。 – rusbro

+0

我知道,我可以看到它至少有一个元素从break piont与我想要的路径仍然只能在Windows 7 32bit,64bit和10 64bit的异常情况下使用相同的代码正常工作。 for循环也适用于当我用一个变量替换索引号但也不返回数组中的任何字符串,但foreach循环肯定会使用相同的代码 – ahmedpio