আমার একটি IEnumerable<T>
পদ্ধতি রয়েছে যা আমি একটি ওয়েব ফর্ম পৃষ্ঠাতে নিয়ন্ত্রণগুলি খুঁজতে ব্যবহার করি।
পদ্ধতিটি পুনরাবৃত্তিযোগ্য এবং yield return
পুনরাবৃত্ত কলটির মানটি ফিরিয়ে দিলে আমার যে প্রকারটি চান তা ফেরত দিতে আমার কিছু সমস্যা হচ্ছে ।
আমার কোডটি নিম্নরূপ দেখায়:
public static IEnumerable<Control>
GetDeepControlsByType<T>(this Control control)
{
foreach(Control c in control.Controls)
{
if (c is T)
{
yield return c;
}
if(c.Controls.Count > 0)
{
yield return c.GetDeepControlsByType<T>();
}
}
}
এটি বর্তমানে "এক্সপ্রেশনের ধরণকে রূপান্তর করতে পারে না" ত্রুটি ছুড়ে ফেলে। তবে যদি এই পদ্ধতিটি টাইপ করে IEnumerable<Object>
, কোড তৈরি করে তবে ভুল টাইপটি আউটপুটটিতে ফিরে আসে।
yield return
পুনরাবৃত্তি ব্যবহার করার সময় কি কোনও উপায় আছে ?
if(c.Controls.Count > 0)
-> if(c.Controls.Any())
, বিশেষত যদি আপনি ভাল
yield
। দয়া করে নীচে দেখুন :) এবং এটি একটি ওয়ান-
yield return
পুনরাবৃত্তামূলক ক্রিয়াগুলি এড়াতে আপনার সতর্ক হওয়া উচিত , মেমরির ব্যবহারটি বিস্ফোরকভাবে স্কেল করে। স্ট্যাকওভারফ্লো.com