সূচক (শূন্য ভিত্তিক) অবশ্যই শূন্যের চেয়ে বড় বা সমান হতে হবে


117

আরে আমি ত্রুটি পেতে থাকি:

সূচক (শূন্য ভিত্তিক) অবশ্যই শূন্যের চেয়ে বড় বা সমান এবং আর্গুমেন্ট তালিকার আকারের চেয়ে কম হওয়া উচিত।

আমার কোড:

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
আপনি ফর্ম্যাট বিবৃতিতে প্যারামিটারের সূচি দিয়ে পাঠকের মধ্যে যুক্তির সূচিটি স্থানান্তরিত করেছেন। আপনার সাথে 0 দিয়ে 2 স্যুইচ করুন Aboutme.Text =
tvanfosson

9
স্ট্রিং.ফর্ম্যাট প্রতি ক্লাসে অনন্য স্থানধারক বা প্রতি-সমাধান ব্যবহার করে না। স্ট্রিং প্রতিবার স্ট্রিং হয়ে থাকে স্ট্রিং For ফর্ম্যাট বলা হয়, তাই দয়া করে এটি increase 0} এবং {1} ব্যবহারের ভিত্তিতে {2} এ বাড়ান না!
রিচার্ডকিকি

1
.DET সংযোগকারী বনাম ওডিবিসি ব্যবহার করার কোনও কারণ?
জন ব্ল্যাক

2
আপনি কেন এই সারির জন্য একটি স্ট্রিং.ফর্মার ব্যবহার করেন :) Aboutme.Text = স্ট্রিং.ফর্ম্যাট ("{2}", পাঠক.গেটস্ট্রিং (0)); আপনি পারে। Aboutme.Text = পাঠক.গেটস্ট্রিং (0);
Ivo

উত্তর:


190

আপনার দ্বিতীয় স্থানধারক হিসাবে String.Formatব্যবহার করে {2}তবে আপনি কেবল একটি যুক্তিতে যাচ্ছেন, সুতরাং {0}পরিবর্তে আপনার ব্যবহার করা উচিত ।

এই পরিবর্তন:

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

এটি:

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

23

এই লাইনে:

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

টোকেন {2} অবৈধ কারণ আপনার কেবল পারমগুলিতে একটি আইটেম রয়েছে। পরিবর্তে এটি ব্যবহার করুন:

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


4

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

}

2

স্ট্রিং.ফর্ম্যাটটি অবশ্যই শূন্য সূচক "{0}" দিয়ে শুরু করতে হবে:

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

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

        }
    }
}

ছবি


1
এখানে, যখন আমি এই কোয়েরিটি চালাই। কমান্ড লাইনে এটি "হ্যালো প্যারাগ প্যাটেল" এর মতো শেষ লাইনটি প্রিন্ট করে না তবে এটি "ত্রুটি দেখায়" সিস্টেমটি For তালিকা। "
প্যারাগ

এটি কনসোল হওয়া উচিত rite রাইটলাইন ("হ্যালো {0}, {1}", ফার্স্টনাম, লাস্টনাম);
Fenrir88

@ ফেনারির ৮৮, স্থির
jt000

0

এই লাইনটি পরিবর্তন করুন:

2 টি 0 হওয়া উচিত Every প্রতিটি গণনা 0 থেকে শুরু হয়।

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

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

0

আমার ক্ষেত্রে আমি ভুল "+ নাম" দেখতে পেলাম না । সংকলক এই ক্ষেত্রে একটি ত্রুটি রিপোর্ট করবে না। সুতরাং যত্ন নিও.

//Wrong Code:

string name="my name";
string age=25;
String.Format(@"Select * from table where name='{1}' and age={1}" +name, age);


//Right Code:

string name="my name";
string age=25;
String.Format(@"Select * from table where name='{1}' and age={1}" , name, age);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.