কোনও তালিকা খালি কিনা তা নির্ধারণ করার জন্য "সেরা" (গতি এবং পাঠযোগ্যতা উভয় বিবেচনায় নেওয়া) কী? এমনকি তালিকাটি প্রকারভেদে IEnumerable<T>
এবং একটি গণনা সম্পত্তি না থাকলেও।
এই মুহুর্তে আমি এর মধ্যে টস আপ করছি:
if (myList.Count() == 0) { ... }
এবং এই:
if (!myList.Any()) { ... }
আমার অনুমান যে দ্বিতীয় বিকল্পটি দ্রুততর, যেহেতু এটি প্রথম আইটেমটি দেখার সাথে সাথে ফলাফলের সাথে ফিরে আসবে, অন্যদিকে দ্বিতীয় বিকল্পটি (একটি গণনাকারীর জন্য) গণনা ফিরিয়ে আনার জন্য প্রতিটি আইটেম দেখতে হবে।
বলা হচ্ছে, দ্বিতীয় বিকল্পটি কি আপনার কাছে পঠনযোগ্য বলে মনে হচ্ছে? তুমি কোনটি পছন্দ করবে? অথবা আপনি খালি তালিকার জন্য আরও ভাল উপায় পরীক্ষা করতে পারেন?
সম্পাদনা @ লাসেভেকের প্রতিক্রিয়াটি সবচেয়ে যুক্তিসঙ্গত বলে মনে হচ্ছে, যদি সম্ভব হয় তবে ক্যাশেড গণনাটি ব্যবহার করতে কিছুটা রানটাইম চেকিংয়ের সাথে মিলিত হবে:
public static bool IsEmpty<T>(this IEnumerable<T> list)
{
if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;
return !list.Any();
}
list.Any()
সমান নয় কি list.IsEmpty
? কাঠামোর পদ্ধতিটি অনুকূলিত করা উচিত - এটি একটি নতুন বাধা কেবলমাত্র যদি আপনি বুঝতে পারেন যে এটি একটি পারফেক্ট বাধা।
IsEmpty
পদ্ধতিটি যুক্ত করার পরামর্শ দিয়েছি । github.com/dotnet/corefx/issues/35054 আপনি যদি চান এবং সম্মত হন তবে দয়া করে এটি পরীক্ষা করে ভোট দিন।
is
এবংcast
কিন্তু ব্যবহারas
এবংnull
: চেকICollection<T> collection = list as ICollection<T>; if (collection != null) return colllection.Count;