the_king
مدیرکل انجمن
متاسفانه اصلا متوجه منظورتون از این پاراگراف نمیشم، خلاصه حرفی که من زدم اینه، Contains رو برای شیء بکار ببرید که قبلا ساخته شده و ممکنه در مجموعه باشه یا نباشه، برای شیء جدیدی که با new می سازید بکار نبرید چون هیچوقت در اون مجموعه نخواهد بود، مگر در یک حالت های کاملا خاص، مثلا زمانی که کلاس اون شیء خاص برای Contains یک پیاده سازی اختصاصی انجام داده باشه.الان پس منظورتون اینه که با متدی از شی ای که از کلاس TreeView ساختم (یعنی شی treeViewName در اینجا) ، یه متدی استفاده کنم که اون TreeNode هایی که توی این شی داره رو برگردونه و خروجی اون TreeNode رو در ورودی این آرگومان بکار ببرم تا مثل کد در پست بالا که دادم ، شی جدیدی از TreeNode ها نسازم؟
foreach پیمایش می کنه، این کار دریافت نیست، اگر میخواهید به هر دلیلی گره ها را تک به تک پیمایش کنید foreach مناسبه وگرنه اگه منظورتون داشتن تمامی گره ها در یک آرایه است foreach برای این منظور نیست، متد CopyTo رو بکار ببرید. قبلا یک آرایه بطول مناسب می سازید و بعد محتویات اش رو با CopyTo پر می کنید. اغلب مجموعه ها متد CopyTo یا ToArray را دارند، اگر جایی نبود ناچارید از foreach استفاده کنید ولی معمولا هست.بهترین کار برای دریافت TreeNode ها هم استفاده از همون حلقه ی foreach هه؟
همچین متدی می تونه با ترتیبهای مختلفی گره ها رو برگردونه، مثل همون مباحث پیمایش درخت در ساختمان داده، به همین جهت به هر شیوه ای که پیاده سازی بشه کاربرد محدودی خواهد داشت.البته یه متدی نیست که یه شی درخت رو بدیم و خودش برامون تمام Node های پرنت و child رو تا آخر پیدا کنه؟
معمولا متد های کم کاربرد و محدود رو در کتابخانه های اصلی زبان قرار نمی دهند، بیخودی حجم Framework زیاد میشه. هر برنامه نویسی میتونه با چند خط کد ساده پیاده سازیش کنه.
اگر برای هیچکدوم از گره ها Name در نظرنگرفته اید، می توانید با همون Find دنبال گره هایی با کلید "" و پارامتر دوم true بگردید، همه گره ها و زیرگره ها را لیست خواهد کرد.