اندکی در مورد Tuple و Yield

هر چند وقت یکبار لازم است نگاهی به کدهای نوشته شده خودمان بییندازیم و با تازه های آن زبان مقایسه کنیم ، آیا پروژه فعلی مان نسبت به پروژه قبلی پیشرفت هایی داشته است ؟آیا توانسته ایم از تازه های سی شارپ در کدهایمان استفاده کنیم ؟ بد نیست هر چند وقت یکبار جهت یادآوری و پیشرفت کدها ، نگاهی داشته باشیم به تازه های سی شارپ  و از آنها جهت بهبود کدنویسی مان استفاده کنیم .

در این پست قصد داریم در مورد دو مورد صحبت کنیم که کمتر در کد ها دیده می شود .

Tuples :

شاید اگر از شما بپرسند برای اینکه یک متد چند خروجی را به ما بدهد چه راهکاری وجود دارد ، بلافاصله به پارامتر های out فکر کنیم و شاید به تعریف یک کلاس poco و ...

Tuple ها از نسخه 4.0  دات نت اضافه شده اند و به ما این امکان را می دهند که بتوان چندین مقدار به به عنوان خرجی برگشت داد .

 public Tuple<int, string, string> GetStudent()
        {
            int studentId = 1001;
            string firstName = "Osman";
            string lastName = "Raimi";
 
            
            return Tuple.Create(studentId, firstName, lastName);
        }

  در سی شارپ 7  Tuple شاهد ها بهبود هایی بوده  است جهت اطلاعات بیتشر در این مورد می توانید به اینجا مراجعه نمایید .

Yield :

فرض کنید متدی داریم که نیاز است لیستی را از یک منبع واکشی کرده و بازگشت دهد ، برای انجام این کار نیاز خواهیم داشت ابتدا یک متغیر موقت ساخته و داده های مورد نظر را در آن ذخیره کنیم و سپس آن را به عنوان خروجی اصلی متد برگشت دهیم د

 public List<int> GetValuesGreaterThan100(List<int> masterCollection)
        {
            List<int> tempResult = new List<int>();
 
            foreach (var value in masterCollection)
            {
                if (value > 100)
                    tempResult.Add(value);
            }
            return tempResult;
        }

 برای جلوگیری کردن از تعریف یک متغیر موقت می توان از yield کمک گرفت ، در این حالت دیگر نیازی به متغیر موقت و نگهداری لیست آیتم ها نداریم .  کد فوق با استفاده از yield را می توان به صورت زیر داشت :

public IEnumerable<int> GetValuesGreaterThan100(List<int> masterCollection)
        {
            foreach (var value in masterCollection)
            {
                if (value > 100)
                    yield return value;
            }
        }

 

استفاده از yield و Tuble ها باعث خوانا تر شدن کد می شوند


توسط : عثمان رحیمی  2 ماه قبل ، شنبه 14 مرداد 1396 ساعت 12:46  0  252

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط