এটি ব্যবহারের উদাহরণ সহ মার্ক মারভেলের উত্তর থেকে কোড এখানে ।
using System;
using System.Collections.Generic;
using System.Linq;
public static class Utils
{
public static bool IsAny<T>(this IEnumerable<T> data)
{
return data != null && data.Any();
}
}
class Program
{
static void Main(string[] args)
{
IEnumerable<string> items;
//items = null;
//items = new String[0];
items = new String[] { "foo", "bar", "baz" };
/*** Example Starts Here ***/
if (items.IsAny())
{
foreach (var item in items)
{
Console.WriteLine(item);
}
}
else
{
Console.WriteLine("No items.");
}
}
}
যেমনটি তিনি বলেছেন, সমস্ত সিকোয়েন্সগুলি পুনরাবৃত্তিযোগ্য নয়, যাতে কোডটি মাঝে মধ্যে সমস্যার কারণ হতে পারে, কারণ IsAny()
ক্রমটি অতিক্রম করতে শুরু করে। আমি সন্দেহ করি যে রবার্ট হার্ভির উত্তরটির অর্থ কী তা হ'ল আপনার প্রায়শই খালি করা null
এবং খালি করা দরকার হয় না । প্রায়শই, আপনি কেবল নাল পরীক্ষা করে দেখতে পারেন এবং তারপরে ব্যবহার করতে পারেন foreach
।
ক্রমটি দু'বার শুরু করা এড়াতে এবং এর সুবিধা নিতে foreach
আমি এই জাতীয় কিছু কোড লিখেছিলাম:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
IEnumerable<string> items;
//items = null;
//items = new String[0];
items = new String[] { "foo", "bar", "baz" };
/*** Example Starts Here ***/
bool isEmpty = true;
if (items != null)
{
foreach (var item in items)
{
isEmpty = false;
Console.WriteLine(item);
}
}
if (isEmpty)
{
Console.WriteLine("No items.");
}
}
}
আমি অনুমান করি যে এক্সটেনশন পদ্ধতিটি আপনাকে টাইপিংয়ের কয়েক লাইন সংরক্ষণ করে, তবে এই কোডটি আমার কাছে আরও স্পষ্ট বলে মনে হচ্ছে। আমি সন্দেহ করি যে কিছু বিকাশকারীরা তাত্ক্ষণিকভাবে বুঝতে পারেন না যে IsAny(items)
এটি ক্রমটির মধ্য দিয়ে পদক্ষেপ শুরু করবে। (অবশ্যই আপনি যদি অনেকগুলি সিকোয়েন্স ব্যবহার করছেন তবে আপনি সেগুলির মাধ্যমে কী পদক্ষেপগুলি তাড়াতাড়ি চিন্তা করতে শিখবেন))