نادیده گرفتن یک مشکل در compile از طرف visual studio !!!!!!!
سلام دوستان.
من یک برنامه نوشتم که قراره با حلقه foreach و یک تابع بازگشتی تمام فایلها و دایرکتوری های یک درایو را نشان بده.ولی موقع کامپایل متوجه شدم کامپایلر یک شرط if رو نادیده میگیره.
کد:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace @foreach
{
publicpartialclassForm1 : Form
{
DirectoryInfo di, ll, ll2;
string s2 = "000", s1 = "111";
public Form1()
{
InitializeComponent();
}
privatevoid Form1_Load(object sender, EventArgs e)
{
di = newDirectoryInfo("f:\\g");
ret(di);
}
privatevoid ret(DirectoryInfo retdi)
{
if (retdi == ll2)
{
return;
}
else
{
ll2 = retdi;
foreach (DirectoryInfo fi in di.GetDirectories())
{
listBox1.Items.Add(fi.FullName.ToString());
ll = fi;
ret(fi);
}
}
}
}
}
در خط if(retdi==ll2) اگر retdi و ll2 با هم مساوی باشند باید بازگشت انجام شود ولی شرط نادیده گرفته میشه و یک حلقه بی نهایت ایجاد میشه و error میده.
اگر کسی هم میتونه این مساله رو با foreach یک جور دیگه حل کنه لطفا راهنماییم کنه
توضیح این که در بازگشتی باید به یک نقطه بازگشت برسی تا تابع بازگشت کنه.اگر نه یک حلقه تو در توی "خود فراخوان" رو ادامه بده.من نمیدونم اون نقطه بازگشت رو باید کجا بگیرم.
باز هم از همگی تشکر میکنم.