PDA

View Full Version : مبتدی: چرا برنامه من رشته رو reverse نمیکنه ؟



babak1
چهارشنبه 29 دی 1389, 14:16 عصر
//==========
char[] strArray;
//=============

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == string.Empty)
MessageBox.Show("please fill in your text box !", "caution", MessageBoxButtons.OK, MessageBoxIcon.Information);
else
{
string newStr = textBox1.Text;
int a =0;
foreach (char i in newStr)
{

strArray[a] = i; **
a++;
}
textBox1.Text = myreverse();
//=============================
//Array.Reverse(strArray);
//textBox1.Text = strArray.ToString();
//=========================================
}
}


//*************************REVERSE****************** ******

public string myreverse()
{
int arrayLenght = strArray.GetLength(0)-1;
StringBuilder sb = new StringBuilder();
for (int z = 0; arrayLenght >= z; arrayLenght--)
sb.Append(strArray[arrayLenght]);


return sb.ToString();


}


این error داده میشه ؟ به خطی که ستاره دار کردم گیر میده !!
Object reference not set to an instance of an object.

mehdi.mousavi
چهارشنبه 29 دی 1389, 14:29 عصر
سلام.
اون خطا برای این هستش که روی یه متغیر null دارید متودی رو فراخوانی می کنید...
برای Reverse کردن یه string، میتونید از LINQ استفاده کنید:


string input = "123456789";
string reverse = new string(input.Reverse().ToArray());

اگر مایل نیستید از LINQ استفاده کنید، میتونید یه Extension Method بدین شکل تعریف کنید:


public static string Reverse(this string str)
{
if (str == null)
throw new ArgumentNullException("str");

if (str.Length == 0)
return string.Empty;

char[] array = str.ToCharArray();
Array.Reverse(array);
return new string(array);
}


و بدین شکل ازش استفاده کنید:


string input = "123456789";
string reverse = input.Reverse();

موفق باشید.

ricky22
چهارشنبه 29 دی 1389, 15:26 عصر
سلام.
در رابطه با همین سوالی که مطرح شده سوال مرتبطی در StackoverFlow دیدم که در نهایت روش اول جناب موسوی را تایید می کند.
http://stackoverflow.com/questions/228038/best-way-to-reverse-a-string-in-c-2-0