2016-05-31 54 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

相关问题