2016-05-31 44 views
-4

您好,我有一個程序在某些文本框中填寫某些信息時會生成一個密鑰。當過我產生,增加了一個額外的1或0,它告訴我,索引和長度必須引用在字符串中的位置,這是代碼的關鍵:當我嘗試添加額外的數字時,索引和長度必須引用字符串中的某個位置?

public virtual string GenerateKey(string BreedPub) 
     { 
       return GenerateKey() + BreedPub.Substring(0, 3); 
     } 

,我認爲它是與此相沖突:

public override string GenerateKey(string BreedPub) 
     { 
      string key = null; 
      if (Pedigree == "1") 
      { 
       key = GenerateKey() + BreedPub.Substring(0, 3) + "1"; 
      } 
      else 
      { 
       key = GenerateKey() + BreedPub.Substring(0, 3) + "0"; 
      } 
      return key; 

現在我試圖改變子到(0,4)或這樣做:

public virtual string GenerateKey(string BreedPub) 
     { 
      if (Pedigree == "1") 
      { 
       return GenerateKey() + BreedPub.Substring(0, 3) + "1"; 
      } 
      else if (Pedigree == "0") 
      { 
       return GenerateKey() + BreedPub.Substring(0, 3) + "0"; 
      } 
      else 
      { 
       return GenerateKey() + BreedPub.Substring(0, 3); 
      } 
     } 

,但它仍然給了我同樣的錯誤消息,有什麼事情我做錯了?

+0

我在GenerateKey調用之間丟失了,但是就這麼簡單。 BreedPub在第一次調用此代碼時的價值是什麼? – Steve

+2

你怎麼知道'BreedPub'至少有3個字符? –

+0

錯誤告訴你問題是什麼:BreedPub長度不到3個字符。 –

回答

0

BreedPub.Substring(0,3)可能會拋出異常,因爲您的BreedPub參數太短。您應該添加一些範圍檢查以確保參數長度至少爲3個字符。

+0

這是尷尬,但我忘了添加一個狗.BreedPub = cmb_Breed.Text某處,無論如何感謝您的幫助 – SoChez

相關問題