簡體   English   中英

.net 應用程序中的 c# 代碼問題

[英]c# code issue in .net application

如果連接了多個 USB 設備(至少一個包含密鑰),下面的代碼返回 false。

如果連接的 USB 設備之一有密鑰,我想讓此代碼返回 true,

List<DriveInfo> list = new List<DriveInfo>(DriveInfo.GetDrives());

foreach (DriveInfo drive in list)
{
   if (drive.DriveType == DriveType.Removable)
   {
       if ((File.Exists(drive.RootDirectory + "Key.txt")) && 
           File.Exists(drive.RootDirectory + "SerialNumber.txt"))
       {
           string KeyFromUsb = (System.IO.File.ReadAllText(drive.RootDirectory + "Key.txt"));
           string serialusb = (System.IO.File.ReadAllText(drive.RootDirectory + "SerialNumber.txt"));
           int serialNumbeFromUsb = Convert.ToInt32(serialusb);
           string KeyFromDataBase = FoundKey(serialNumbeFromUsb);

           if (KeyFromDataBase == KeyFromUsb)
           {
              ok = true;
           }
           else
           {
               return false;
           }
        }
    }
}

很常見的邏輯問題。

更改ok = truereturn true並將return false移動到循環外部。

List<DriveInfo> list = new List<DriveInfo>(DriveInfo.GetDrives());

foreach (DriveInfo drive in list)
{
   if (drive.DriveType == DriveType.Removable)
   {
       if ((File.Exists(drive.RootDirectory + "Key.txt")) && 
           File.Exists(drive.RootDirectory + "SerialNumber.txt"))
       {
           string KeyFromUsb = (System.IO.File.ReadAllText(drive.RootDirectory + "Key.txt"));
           string serialusb = (System.IO.File.ReadAllText(drive.RootDirectory + "SerialNumber.txt"));
           int serialNumbeFromUsb = Convert.ToInt32(serialusb);
           string KeyFromDataBase = FoundKey(serialNumbeFromUsb);

           if (KeyFromDataBase == KeyFromUsb)
           {
              return true;
           }
        }
    }
}
return false;
List<DriveInfo> list = new List<DriveInfo>(DriveInfo.GetDrives());
//var i = 0;
int i = 0;
foreach (DriveInfo drive in list)
{
   if (drive.DriveType == DriveType.Removable)
   {
       if ((File.Exists(drive.RootDirectory + "Key.txt")) && 
           File.Exists(drive.RootDirectory + "SerialNumber.txt"))
       {
           string KeyFromUsb = (System.IO.File.ReadAllText(drive.RootDirectory + "Key.txt"));
           string serialusb = (System.IO.File.ReadAllText(drive.RootDirectory + "SerialNumber.txt"));
           int serialNumbeFromUsb = Convert.ToInt32(serialusb);
           string KeyFromDataBase = FoundKey(serialNumbeFromUsb);

           if (KeyFromDataBase == KeyFromUsb)
           {
              i = 1; //or simply return true, this will exit the loop
           }
        }
    }
}

if(i == 1)
{
    ok = true;
}

或者簡單地返回true。 (不要在 foreach 循環中返回 false)。

      List<DriveInfo> list = new List<DriveInfo>(DriveInfo.GetDrives());
      var condSatisfied = false;

      foreach (DriveInfo drive in list)
      {
          if (drive.DriveType == DriveType.Removable)
          {
              if ((File.Exists(drive.RootDirectory + "Key.txt")) && 
                 File.Exists(drive.RootDirectory + "SerialNumber.txt"))
               {
                   string KeyFromUsb = (System.IO.File.ReadAllText(drive.RootDirectory + "Key.txt"));
                   string serialusb = (System.IO.File.ReadAllText(drive.RootDirectory + "SerialNumber.txt"));
                 int serialNumbeFromUsb = Convert.ToInt32(serialusb);
                   string KeyFromDataBase = FoundKey(serialNumbeFromUsb);

                   if (KeyFromDataBase == KeyFromUsb)
                  {
                      ok = true;
                     condSatisfied = true;
                   }
               }
           }
        }

       return condSatisfied

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM