IENumerable নাল বা খালি কিনা তা কীভাবে পরীক্ষা করবেন?


154

আমি string.IsNullOrEmptyপদ্ধতি পছন্দ। আমি এমন কিছু পেতে চাই যা আইনামিউরেবলের জন্য একই কার্যকারিতাটি মঞ্জুরি দেয়। এমন কি আছে? কিছু সংগ্রাহক সহায়ক বর্গ হতে পারে? আমি জিজ্ঞাসা করার কারণটি হ'ল ifবিবৃতিতে প্যাটারটি থাকলে কোডটি বিশৃঙ্খলা দেখায় (mylist != null && mylist.Any())। এটি থাকা অনেক ক্লিনার হবে Foo.IsAny(myList)

এই পোস্টটি উত্তর দেয় না: আইনিম্যারেবল খালি?


1
@ সরসকেট: আমি যদি আপনাকে মন্তব্য না করতাম তবে সম্ভবত উত্তরটি দিয়েছিলাম :)
শুল্টজ9999

আমার কাছে এটি XY সমস্যার মতো বলে মনে হচ্ছে like "এত বিরক্তিকর না হয়ে আমি কীভাবে নালার জন্য সঠিকভাবে পরীক্ষা করতে পারি" জিজ্ঞাসা করার পরিবর্তে আপনার জিজ্ঞাসা করা উচিত "আমি কীভাবে আমার নকশাটি উন্নত করতে পারি যাতে আমি কোথাও নাল পরীক্ষা করতে পারি না?"
সারা

@ নওফাল, আপনি যে প্রশ্নটির সাথে লিঙ্ক করেছেন তাতে বিশেষভাবে নাল চেক অন্তর্ভুক্ত নয়, তাই আমি এটিকে সদৃশ হিসাবে বিবেচনা করব না
মাইগেন

উত্তর:


188

নিশ্চিত যে আপনি এটি লিখতে পারে :

public static class Utils {
    public static bool IsAny<T>(this IEnumerable<T> data) {
        return data != null && data.Any();
    }
}

তবে, সাবধান থাকুন যে সমস্ত ক্রম পুনরাবৃত্তিযোগ্য নয়; সাধারণত আমি কেবল তাদের ক্ষেত্রে একবারে হাঁটতে পছন্দ করি।


12
এটি কি ভাল প্যাটার্ন? আমি সেখানে ফেলে দেবো this- আমি এমন এক্সটেনশন পদ্ধতিগুলি বিবেচনা করি nullযাগুলি কুৎসিত ডিজাইনের চিহ্ন হিসাবে ডাকা হয় বলে ধরে নেওয়া হয় ।
মুরমেগিল

28
@ মুরমেগিল কেন? এক্সটেনশন পদ্ধতিগুলি অবশেষে সি # কে নাল দিয়ে কাজ করার জন্য কিছু ক্ষমতা দেয় যা অন্য ভাষা (যেমন রুবি) পুরোপুরি মঞ্জুর করে।
ম্যাট গ্রেয়ার

5
কেন এটি অগত্যা খারাপ? এই ক্ষেত্রে যেমন এটি কখনও কখনও খুব কার্যকর হয় যেহেতু এটি আপনাকে জিনিসগুলিকে আরও একজাতীয়ভাবে এবং কম বিশেষ ক্ষেত্রে ব্যবহার করতে দেয়।
মিঃ পুট্টি

5
@ মর্মেগিল মেহ - আমি সে সম্পর্কে উত্তেজিত হতে পারি না। যতক্ষণ না উদ্দেশ্যটি পরিষ্কার থাকে ইত্যাদি
মার্ক গ্রাভেল

6
@ মির্যাফা .Any()একটি এক্সটেনশন পদ্ধতি যা এটি পরিচালনা করে IEnumerable<T>(বা IQueryable<T>যদিও এটি ভিন্ন চিত্র)। এটি করার ফলে ক্রমটি কমপক্ষে আংশিকভাবে গ্রাস হয় (যদিও এর অর্থ এখনও এটি গ্রাস করা হয়) - এটির জন্য কেবলমাত্র একটি উপাদান পড়ার প্রয়োজন হতে পারে (বিশেষত যদি কোনও শিকারী না থাকে)। যেমন, যেহেতু সিকোয়েন্সগুলি ( IEnumerable<T>) পুনরাবৃত্তিযোগ্য হওয়ার দরকার নেই, এটি হতে পারেAny()কোনও শিকারী ছাড়াই মূলত সমান foreach(var x in sequence) { return true; } return false;- যদিও এটি GetEnumerator()সংকলক সিনট্যাক্সের পরিবর্তে ইত্যাদি ব্যবহার করে
মার্ক গ্রাভেল

119
public static bool IsNullOrEmpty<T>(this IEnumerable<T> enumerable) {
    return enumerable == null || !enumerable.Any();
}

8
ভাল, বেশ নয়, ওপেন আইনিউম্যারেবলের জন্য জিজ্ঞাসা করেছেন, নয় আইটিউবারেবল <T> ;-)
yoyo

8
হ্যাঁ, IEnumerableএর কোনও Any()এক্সটেনশন নেই।
ব্লেইস

23

মানচিত্রের বক্সিংটি এড়ানোর জন্য @ ম্যাট গ্রেয়ারের দরকারী উত্তরের একটি পরিবর্তিত সংস্করণ এখানে একটি স্ট্যাটিক মোড়ক শ্রেণীর অন্তর্ভুক্ত রয়েছে যাতে আপনি এটি কেবল একটি নতুন উত্স ফাইলে কপি-পেস্ট করতে পারেন, লিনকের উপর নির্ভর করে না এবং জেনেরিক IEnumerable<T>ওভারলোড যুক্ত করতে পারেন, যাতে মানের ধরণের বক্সিং এড়ানোর জন্য যা অ-জেনেরিক সংস্করণে ঘটে। [সম্পাদনা: নোট করুন যে ব্যবহারকারীর বক্সিংটি IEnumerable<T>বাধা দেয় না, হাঁস-টাইপিং এটি প্রতিরোধ করতে পারে না, তবে কমপক্ষে একটি মান-টাইপযুক্ত সংগ্রহে থাকা উপাদানগুলিকে প্রত্যেকটি বাক্সযুক্ত করা যাবে না]]

using System.Collections;
using System.Collections.Generic;

public static class IsNullOrEmptyExtension
{
    public static bool IsNullOrEmpty(this IEnumerable source)
    {
        if (source != null)
        {
            foreach (object obj in source)
            {
                return false;
            }
        }
        return true;
    }

    public static bool IsNullOrEmpty<T>(this IEnumerable<T> source)
    {
        if (source != null)
        {
            foreach (T obj in source)
            {
                return false;
            }
        }
        return true;
    }
}

15

আরেকটি উপায় হ'ল এনুমুরেটরটি পাবেন এবং কোনও আইটেম রয়েছে কিনা তা দেখার জন্য মুভনেক্সট () পদ্ধতিতে কল করুন:

if (mylist != null && mylist.GetEnumerator().MoveNext())
{
    // The list is not null or empty
}

এটি আইইনামেবলের পাশাপাশি আইইনিউমারেবল <টি> জন্যও কাজ করে।


4
আপনি কি এই গণকের নিষ্পত্তি কল করবেন? সংগ্রহটি যদি মাল্টিথ্রেডিং সচেতন হয়? হ্যাঁ. stackoverflow.com/questions/13459447/...
TamusJRoyce

2
@ টিমাসজেরোয়েস নোট করুন যে আপনার বক্তব্যটি কেবলমাত্র সত্য IEnumerable<T>, কারণ নন-জেনেরিক IEnumerableপ্রয়োগ করে না IDisposable
ইয়ান কেম্প

9

কিছু আধুনিক সি # বৈশিষ্ট্যের সুবিধা নিয়ে আমি যেভাবে এটি করছি তা:

বিকল্প 1)

public static class Utils {
    public static bool IsNullOrEmpty<T>(this IEnumerable<T> list) {
        return !(list?.Any() ?? false);
    }
}

বিকল্প 2)

public static class Utils {
    public static bool IsNullOrEmpty<T>(this IEnumerable<T> list) {
        return !(list?.Any()).GetValueOrDefault();
    }
}

এবং এইভাবে, ব্যবহার না Count == 0বা Count() == 0শুধু একটি সংগ্রহটি ফাঁকা রয়েছে বার করো। সর্বদা লিনক ব্যবহার করুন.Any()


2
গণনা == 0 ঠিক আছে .... সম্ভবত কোনও () এর চেয়ে দ্রুত? তবে আপনি গণনা () == 0 খারাপ হওয়ার কারণে সঠিক। যাঁরা বিস্মিত হচ্ছেন তাদের সম্পূর্ণ সংগ্রহের মাধ্যমে গণনা () পুনরাবৃত্তি করে, তাই যদি এটি বিশাল হয় তবে এক টন ওভারহেড যোগ করতে পারে!
অ্যান্টনি নিকোলস

গণনা () কেবলমাত্র গণনার পুনরাবৃত্তি করে যদি এটি কোনও আইকোলিকেশনটিতে কাস্ট করা যায় না। অন্য কথায়, আপনি যখন এই পদ্ধতিটি কল করবেন, যদি ইতিমধ্যে কোনও বস্তুর উপর একটি গণনার সম্পত্তি থাকে তবে এটি কেবল এটি ফিরিয়ে দেবে এবং পারফরম্যান্সটি অভিন্ন হওয়া উচিত। বাস্তবায়নটি এখানে দেখুন: রেফারেন্সসোর্স.মাইক্রোসফট.
রোনাল্ড রে

আপনি যদি কোনও আইনুনামেবলের সাথে কাজ করে থাকেন তবে শূন্যতার জন্য পরীক্ষার জন্য কাউন্ট () ব্যবহার করা অবশ্যই একটি খারাপ ধারণা, যেহেতু লিনক বাস্তবায়ন পুরো সংগ্রহের উপরে পুনরাবৃত্তি করবে, যেহেতু যে কোনও একবার কেবল পুনরাবৃত্তিকে সরানো হবে। মনে রাখবেন যে আপনি এই ক্ষেত্রে কাউন্টের সম্পত্তিটি ব্যবহার করতে পারবেন না কারণ এটি আইএনমেটারেবল ইন্টারফেসের অংশ নয়। সে কারণেই আমার মতে সব পরিস্থিতিতে শূন্যতার জন্য পরীক্ষার জন্য যে কোনও () ব্যবহার করা সর্বদা একটি ভাল ধারণা।
রোনাল্ড রে

না-পঠনযোগ্য নেগেটিশন অপারেটরটি কীভাবে হতে পারে তার চমৎকার উদাহরণ !, বিশেষত দ্বিতীয় বিকল্পে;)
ফ্যাবিও


5

সি # 6 দিয়ে শুরু করে আপনি নাল প্রচার ব্যবহার করতে পারেন :myList?.Any() == true

যদি আপনি এখনও এটি খুব ক্লোজি খুঁজে পান বা একটি ভাল অ্যাল 'এক্সটেনশন পদ্ধতি পছন্দ করেন তবে আমি ম্যাট গ্রেয়ার এবং মার্ক গ্রাভেলের উত্তরগুলি সুপারিশ করব, তবুও সম্পূর্ণতার জন্য কিছুটা বর্ধিত কার্যকারিতা সহ।

তাদের উত্তরগুলি একই বুনিয়াদি কার্যকারিতা সরবরাহ করে তবে প্রত্যেকটি অন্য দৃষ্টিকোণ থেকে। ম্যাট-এর উত্তরটি string.IsNullOrEmptyথিমেন্টালিটি ব্যবহার করে , অন্যদিকে মার্কের উত্তরটি লিনকের .Any()রাস্তাটি নিয়ে কাজ শুরু করে।

আমি ব্যক্তিগতভাবে .Any()রাস্তাটি ব্যবহার করতে আগ্রহী , তবে পদ্ধতির অন্যান্য ওভারলোডের থেকে শর্ত পরীক্ষার কার্যকারিতা যুক্ত করতে চাই :

    public static bool AnyNotNull<T>(this IEnumerable<T> source, Func<T, bool> predicate = null)
    {
        if (source == null) return false;
        return predicate == null
            ? source.Any()
            : source.Any(predicate);
    }

সুতরাং আপনি এখনও এই জাতীয় কাজগুলি করতে পারেন: myList.AnyNotNull(item=>item.AnswerToLife == 42);যেমন আপনি নিয়মিত করতে পারেন .Any()তবে যুক্ত নাল চেক সহ

মনে রাখবেন যে সি # 6 টি দিয়ে: myList?.Any()একটিকে bool?পরিবর্তে ফেরত দেয় boolযা নাল প্রচারের প্রকৃত প্রভাব


1
সংগ্রহের সাথে সমস্যা? .একটি () হ'ল এটি ট্রানজিটিভ নয়। কখন নাল, সংগ্রহ?? যে কোনও () == সত্য মিথ্যা, তবে সংগ্রহ? !? তাছাড়া, সংগ্রহ .Any () == মিথ্যা খুব মিথ্যা ...
Jakub Szułakiewicz

4
if (collection?.Any() == true){
    // if collection contains more than one item
}
if (collection?.Any() != true){
    // if collection is null
    // if collection does not contain any item
}

2

এটি ব্যবহারের উদাহরণ সহ মার্ক মারভেলের উত্তর থেকে কোড এখানে ।

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)এটি ক্রমটির মধ্য দিয়ে পদক্ষেপ শুরু করবে। (অবশ্যই আপনি যদি অনেকগুলি সিকোয়েন্স ব্যবহার করছেন তবে আপনি সেগুলির মাধ্যমে কী পদক্ষেপগুলি তাড়াতাড়ি চিন্তা করতে শিখবেন))


যদি আপনি ইসানিকে নালিতে কল করেন তবে এটি একটি ব্যতিক্রম হবে
এস ট্রাজকভ

3
আপনি কি এটি চেষ্টা করেছেন, @ এস? দেখে মনে হচ্ছে এটি কোনও ব্যতিক্রম ছুঁড়ে ফেলবে তবে এক্সটেনশন পদ্ধতিগুলি নাল দৃষ্টান্তে কল করা যেতে পারে
ডন কার্কবি

2

আমি ব্যবহার Bool IsCollectionNullOrEmpty = !(Collection?.Any()??false);। আশাকরি এটা সাহায্য করবে.

ভাঙ্গন:

Collection?.Any()সংগ্রহটি শূন্য হলে nullএবং falseসংগ্রহটি খালি থাকলে ফিরে আসবে ।

Collection?.Any()??falseআমাদের দিতে হবে falseযদি সংগ্রহ খালি, এবং falseযদি সংগ্রহ null

এর পরিপূরক আমাদের দেবে IsEmptyOrNull


2

জন স্কিটির অ্যানসার ( https://stackoverflow.com/a/28904021/8207463 ) NULL এবং EMPTY এর জন্য এক্সটেনশন পদ্ধতি - যেকোন () ব্যবহার করে একটি ভাল পদ্ধতির রয়েছে। তবে তিনি প্রশ্নাবলীর মালিককে নালিশ না করার ক্ষেত্রে বৈধতা দিচ্ছেন। সুতরাং AS নালকে বৈধতা দেওয়ার জন্য জোনের দৃষ্টিভঙ্গিটি সাবধানতার সাথে করুন:

If (yourList?.Any() != true) 
{
     ..your code...
}

ব্যবহার করবেন না (AS নাল হিসাবে বৈধতা দেবে না):

If (yourList?.Any() == false) 
{
     ..your code...
}

আপনি নাল না হিসাবে যাচাইয়ের ক্ষেত্রে (যেমন উদাহরণ হিসাবে পরীক্ষা করা হয়নি তবে সংকলক ত্রুটি ছাড়া) প্রাকটিকেট ব্যবহার করার মতো কিছু করতে পারেন:

If (yourList?.Any(p => p.anyItem == null) == true) 
{
     ..your code...
}

https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,8788153112b7ffd0

যার জন্য। নেট সংস্করণ আপনি এটি ব্যবহার করতে পারেন দয়া করে পরীক্ষা করুন:

https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.any?view=netframework-4.8#moniker-applies-to


1

আমারও একই সমস্যা ছিল এবং আমি এটিকে সমাধান করি:

    public bool HasMember(IEnumerable<TEntity> Dataset)
    {
        return Dataset != null && Dataset.Any(c=>c!=null);
    }

"সি => সি! = নাল" সমস্ত নাল সত্তাকে উপেক্ষা করবে।


1

আমি উত্তরটি বন্ধ করে দিয়েছি @ ম্যাট গ্রেয়ার

ওপির প্রশ্নের উত্তর তিনি পুরোপুরি দিয়েছিলেন।

নলের জন্য পরীক্ষা করার সময় আমি যে কোনওটির আসল ক্ষমতা বজায় রেখে এই জাতীয় কিছু চাইছিলাম। অন্য কারও মতো কিছু প্রয়োজন হলে আমি এটি পোস্ট করছি।

বিশেষত আমি চাইছিলাম এখনও একটি প্রিকেটে পাস করতে সক্ষম হব।

public static class Utilities
{
    /// <summary>
    /// Determines whether a sequence has a value and contains any elements.
    /// </summary>
    /// <typeparam name="TSource">The type of the elements of source.</typeparam>
    /// <param name="source">The <see cref="System.Collections.Generic.IEnumerable"/> to check for emptiness.</param>
    /// <returns>true if the source sequence is not null and contains any elements; otherwise, false.</returns>
    public static bool AnyNotNull<TSource>(this IEnumerable<TSource> source)
    {
        return source?.Any() == true;
    }

    /// <summary>
    /// Determines whether a sequence has a value and any element of a sequence satisfies a condition.
    /// </summary>
    /// <typeparam name="TSource">The type of the elements of source.</typeparam>
    /// <param name="source">An <see cref="System.Collections.Generic.IEnumerable"/> whose elements to apply the predicate to.</param>
    /// <param name="predicate">A function to test each element for a condition.</param>
    /// <returns>true if the source sequence is not null and any elements in the source sequence pass the test in the specified predicate; otherwise, false.</returns>
    public static bool AnyNotNull<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
    {
        return source?.Any(predicate) == true;
    }
}

এক্সটেনশন পদ্ধতির নামকরণ সম্ভবত আরও ভাল হতে পারে।


0

খালি চেক করতে নীচের মতো অন্যান্য সেরা সমাধান?

for(var item in listEnumerable)
{
 var count=item.Length;
  if(count>0)
  {
         // not empty or null
   }
  else
  {
       // empty
  }
}

1
listEnumerableশূন্য হলে এটি কাজ করবে না , যা হাতে প্রশ্ন
টিমোটেই

0

আমি এটি ব্যবহার করি:

    public static bool IsNotEmpty(this ICollection elements)
    {
        return elements != null && elements.Count > 0;
    }

Ejem:

List<string> Things = null;
if (Things.IsNotEmpty())
{
    //replaces ->  if (Things != null && Things.Count > 0) 
}

0

যেহেতু কিছু সংস্থান এক পড়ার পরে নিঃশেষ হয়ে গেছে, তাই আমি ভেবেছিলাম কেন চেক এবং পাঠগুলি একত্রিত করবেন না, পরিবর্তে traditionalতিহ্যবাহী পৃথক চেক, তারপরে পড়ুন।

প্রথমে আমাদের কাছে সহজ চেক-ফর-নাল ইনলাইন এক্সটেনশনের জন্য একটি রয়েছে:

public static System.Collections.Generic.IEnumerable<T> ThrowOnNull<T>(this System.Collections.Generic.IEnumerable<T> source, string paramName = null) => source ?? throw new System.ArgumentNullException(paramName ?? nameof(source));

var first = source.ThrowOnNull().First();

তারপরে আমাদের আরও কিছুটা অন্তর্ভুক্ত রয়েছে (ভাল, কমপক্ষে আমি এটি যেভাবে লিখেছি) চেক-ফর-নাল-এ-ফাঁকা ইনলাইন এক্সটেনশন:

public static System.Collections.Generic.IEnumerable<T> ThrowOnNullOrEmpty<T>(this System.Collections.Generic.IEnumerable<T> source, string paramName = null)
{
  using (var e = source.ThrowOnNull(paramName).GetEnumerator())
  {
    if (!e.MoveNext())
    {
      throw new System.ArgumentException(@"The sequence is empty.", paramName ?? nameof(source));
    }

    do
    {
      yield return e.Current;
    }
    while (e.MoveNext());
  }
}

var first = source.ThrowOnNullOrEmpty().First();

আপনি অবশ্যই এখনও কল চেইন অবিরত না করে উভয়কে কল করতে পারেন। এছাড়াও, আমি প্যারামনামটি অন্তর্ভুক্ত করেছি, যাতে কলারটি "উত্স" পরীক্ষা না করা থাকলে ত্রুটির জন্য বিকল্প নাম অন্তর্ভুক্ত করতে পারে, যেমন "নেমফ (লক্ষ্য)"।


0
 public static bool AnyNotNull<TSource>(this IEnumerable<TSource> source)
    {
        return source != null && source.Any();
    }

নাল নাল এবং যে কোনওটি পরীক্ষা করার জন্য আমার নিজের এক্সটেনশন পদ্ধতি


0

কাস্টম সহায়তা ছাড়াই আমি প্রস্তাব দিই ?.Any() ?? falseবা ?.Any() == trueযা অপেক্ষাকৃত সংক্ষিপ্ত এবং কেবল একবারের ক্রমটি নির্দিষ্ট করা দরকার।


আমি যখন কোনও নিখোঁজ সংগ্রহকে খালি খালি মতো চিকিত্সা করতে চাই, আমি নীচের এক্সটেনশন পদ্ধতিটি ব্যবহার করি:

public static IEnumerable<T> OrEmpty<T>(this IEnumerable<T> sequence)
{
    return sequence ?? Enumerable.Empty<T>();
}

এই ফাংশনটি সমস্ত লিনকিউ পদ্ধতির সাথে একত্রিত করা যেতে পারে এবং foreachকেবল তাই নয় .Any(), এজন্যই আমি এটিকে আরও বেশি বিশেষায়িত সহায়ক ফাংশনগুলির চেয়ে পছন্দ করি যেখানে লোকেরা এখানে প্রস্তাব করছে।


0

আমি ব্যবহার করি

    list.Where (r=>r.value == value).DefaultIfEmpty().First()

কোনও মিল না থাকলে ফলাফলটি শূন্য হবে, অন্যথায় যে কোনও একটি বস্তু ফেরত দেয়

আপনি যদি তালিকাটি চেয়েছিলেন তবে আমি বিশ্বাস করি যে প্রথম () ছেড়ে যাওয়ার বা টোললিস্টে কল করা () তালিকাগুলি সরবরাহ করবে বা বাতিল হবে।



-1

using System.Linqআপনি যখন উপলভ্য পদ্ধতিগুলিতে অ্যাক্সেস করার চেষ্টা করবেন তখন কেবল যাদুটি যুক্ত করুন এবং দেখুন IEnumerable। এটি যুক্ত করা আপনাকে Count()সেই হিসাবে সহজ হিসাবে নামকরণ পদ্ধতিতে অ্যাক্সেস দেয় । শুধু null valueকল করার আগে পরীক্ষা করার জন্য মনে রাখবেন count():)


-1

আমি এটি পরীক্ষা করতে যদি সহজ ব্যবহার

আমার সমাধান পরীক্ষা করে দেখুন

foreach (Pet pet in v.Pets)
{
    if (pet == null)
    {
        Console.WriteLine(" No pet");// enumerator is empty
        break;
    }
    Console.WriteLine("  {0}", pet.Name);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.