簡體   English   中英

索引(從零開始)必須大於或等於零

[英]Index (zero based) must be greater than or equal to zero

嘿,我不斷收到錯誤消息:

索引(從零開始)必須大於或等於零且小於參數列表的大小。

我的代碼:

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));
}

您的第二個String.Format使用{2}作為占位符,但您只傳入一個參數,因此您應該改用{0}

改變這個:

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

對此:

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

在這一行:

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

令牌 {2} 無效,因為參數中只有一項。 改用這個:

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

改變這一行:

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

當您在無意中調用ArgumentException構造函數重載時嘗試拋出ArgumentException時也會發生這種情況

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);

}

String.Format 必須以零索引“{0}”開頭,如下所示:

Aboutme.Text = String.Format("{0}", reader.GetString(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();

        }
    }
}

圖片

改變這一行:

2 應該是 0。每個計數都從 0 開始。

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

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

暫無
暫無

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

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