2014-02-21 71 views
0

這是我依靠Win32_ComputerSystemProduct結構檢索主板的UUID的方法。針對無效UUID的自定義異常處理程序

#region "UUID" 
    public static string getUUID() 
    { 
     string UUID = string.Empty; 
     try 
     { 
      ManagementClass mc = new ManagementClass("Win32_ComputerSystemProduct"); 
      ManagementObjectCollection moc = mc.GetInstances(); 

      foreach (ManagementObject mo in moc) 
      { 
       UUID = mo.Properties["UUID"].Value.ToString(); 
       break; 
      } 

      UUID = ""; 

      if (UUID.Equals(string.Empty) 
       || UUID.Equals("") 
       || UUID.Equals(null) 
       || UUID.Equals("FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF") 
       || UUID.Equals("00000000-0000-0000-0000-000000000000")) 
      { 
       throw new System.Exception("UUID is invalid."); 
      } 
      return UUID; 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Error Message: " + ex.Message); 
     } 
     return UUID; 
    } 
    #endregion 

我有拋出套內字符串是我列出的一個錯誤,因爲C#隱含不知道,像FFF...FFF一個字符串無效/錯誤內置的異常處理程序。

我重新定義了UUID = "";來測試這個方法,比如說運行這個腳本的用戶有一個空白的UUID。

我想知道 - 這是正確的做法嗎?我不確定return UUID即使它是空白仍然返回UUID,或FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

+1

'.Equals(string.Empty)'和'.Equals(「」)'是相同的。 – Joey

+1

'.IsNullOrEmpty'應該在這裏使用。 – James

+0

你確定嗎?我讀到他們是完全不同的。哦,這不會影響性能,所以我會把它留在那裏。 – theGreenCabbage

回答

0

對於初學者,在您的if語句之前,您將UUID設置爲null。

接下來,你是否應該是這樣的:

 if (String.IsNullorEmpty(UUID) 
      || UUID.Equals("FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF") 
      || UUID.Equals("00000000-0000-0000-0000-000000000000")) 
     { 
      throw new System.Exception("UUID is invalid."); 
     } 
     return UUID; 

其他然後,這整個if語句應該是在foreach

+0

我不能'UUID.IsNullorEmpty',但我可以做'string.IsNullOrEmpty(UUID)'。那是一樣的嗎? – theGreenCabbage

+0

是的,這是一回事。對不起,只是或多或少地試圖讓功能跨越。將編輯帖子。 – James

+0

謝謝,我做了改變。 – theGreenCabbage