2011-03-15 43 views
85

için eşit veya daha büyük olmalıdır Hey bir hata almaya devam:Endeksi (esaslı sıfır) sıfıra

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

Kodum:

OdbcCommand cmd = new OdbcCommand("SELECT FirstName, SecondName, Aboutme FROM User WHERE UserID=1", cn); 

OdbcDataReader reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    Name.Text = String.Format("{0} {1}", reader.GetString(0), reader.GetString(1)); 
    Aboutme.Text = String.Format("{2}", reader.GetString(0)); 
} 
+6

Okuyucudaki argümanın indeksini, format ifadesindeki parametrenin indeksi ile transpoze ettiniz. Aboutme.Text = 'öğesinde 0 ile 2 arasında geçiş yapın. – tvanfosson

+9

String.Format, sınıf başına veya çözüm başına benzersiz yer tutucu kullanmaz. String.Format çağrıldığında her dizge başına yazılır. Bu nedenle, {0} ve {1} tabanlı {2} numaralı telefona göre {2} değerini artırmayın! – RichardTheKiwi

+1

ODBC vs .NET bağlayıcısını kullanmanızın herhangi bir nedeni var mı? –

cevap

144

String.Format yer tutucu ama senin kadar {2} ikinci kullanır Sizin Sadece bir argümandan geçiyorsunuz, bunun yerine {0}'u kullanmalısınız.

String.Format("{2}", reader.GetString(0)); 

Buna: Bu

Değişim

String.Format("{0}", reader.GetString(2)); 
7

Değişim bu satırı: Bu satırda

Aboutme.Text = String.Format("{0}", reader.GetString(0)); 
19

:

Aboutme.Text = String.Format("{2}", reader.GetString(0)); 

{2} belirteci geçersiz, çünkü yalnızca parislerde bir tane öğeniz var. Bunu kullan:

Aboutme.Text = String.Format("{0}", reader.GetString(0)); 
1

Bu aynı zamanda gerçekleşebilir istemeden çağrı nerede ArgumentException yapıcı aşırı yük tespit başlamalıdır

public static void Dostuff(Foo bar) 
{ 

    // this works 
    throw new ArgumentException(String.Format("Could not find {0}", bar.SomeStringProperty)); 

    //this gives the error 
    throw new ArgumentException(String.Format("Could not find {0}"), bar.SomeStringProperty); 

} 
0
using System; 

namespace ConsoleApp1 
{ 
    class Program 
    { 
     static void Main() 
     { 
      Console.WriteLine("Enter Your FirstName "); 
      String FirstName = Console.ReadLine(); 

      Console.WriteLine("Enter Your LastName "); 
      String LastName = Console.ReadLine(); 
      Console.ReadLine(); 

      Console.WriteLine("Hello {0}, {1} " + FirstName, LastName); 
      Console.ReadLine(); 

     } 
    } 
} 

Picture

+0

Burada, bu sorguyu çalıştırdığımda. Komut satırında "Hello Parag Patel" gibi son satırı yazmaz, ancak hata gösteriyor "System.FormatException oluştu Message = Index (sıfır tabanlı) sıfırdan büyük veya ona eşit ve daha küçük olmalıdır. argüman listesi. " – parag

0

String.format bir ArgumentException atmak çalışırken sıfır dizin "{0}" şöyle:

Aboutme.Text = String.Format("{0}", reader.GetString(0)); 
İlgili konular