Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में Null सूची की जांच


C# में किसी सूची (List<T>) के null होने की जांच करना महत्वपूर्ण है क्योंकि null सूची पर किसी भी सदस्य (Count, Add(), Any() आदि) को एक्सेस करने पर NullReferenceException फेंका जाता है।

उदाहरण: Null सूची बनाना और जांचना

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        // Null सूची घोषित करें
        List nullList = null;
        
        // खाली सूची (तुलना के लिए)
        List emptyList = new List();
        
        Console.WriteLine("=== Null सूची ===");
        Console.WriteLine($"nullList == null: {nullList == null}");        // True
        
        Console.WriteLine("\n=== खाली सूची ===");
        Console.WriteLine($"emptyList == null: {emptyList == null}");      // False
        Console.WriteLine($"emptyList.Count: {emptyList.Count}");          // 0
        
        // Null सूची पर ऑपरेशन (अपवाद फेंकेंगे)
        Console.WriteLine("\n=== Null सूची पर ऑपरेशन (टिप्पणी हटाकर टेस्ट करें) ===");
        // Console.WriteLine(nullList.Count);        // NullReferenceException
        // Console.WriteLine(nullList.Any());        // NullReferenceException
        // nullList.Add("test");                     // NullReferenceException
    }
}

आउटपुट

=== Null सूची ===
nullList == null: True

=== खाली सूची ===
emptyList == null: False
emptyList.Count: 0

Null जांच के सुरक्षित तरीके

1. पारंपरिक null जांच

if (list != null && list.Count > 0)
{
    // सूची में तत्व हैं
}

2. Null-conditional ऑपरेटर (?. - C# 6.0+)

int? count = list?.Count;        // null यदि list null है, अन्यथा Count
bool hasItems = list?.Any() ?? false; // false यदि list null या खाली
var first = list?.FirstOrDefault();   // null यदि list null या खाली

3. पैटर्न मिलान (C# 7.0+)

string status = list switch
{
    null => "Null सूची",
    { Count: 0 } => "खाली सूची",
    _ => $"{list.Count} तत्वों वाली सूची"
};

4. सहायक एक्सटेंशन मेथड

public static class ListExtensions
{
    public static bool IsNullOrEmpty(this List list)
        => list == null || list.Count == 0;
    
    public static bool IsNullOrEmpty(this IEnumerable enumerable)
        => enumerable == null || !enumerable.Any();
}

// उपयोग
if (myList.IsNullOrEmpty())
    Console.WriteLine("सूची null या खाली है");

पूर्ण तुलनात्मक उदाहरण

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

public class Demo
{
    public static void Main()
    {
        List nullList = null;
        List emptyList = new List();
        List populatedList = new List { "A", "B" };
        
        TestList("Null सूची", nullList);
        TestList("खाली सूची", emptyList);
        TestList("भरी सूची", populatedList);
    }
    
    static void TestList(string name, List list)
    {
        Console.WriteLine($"--- {name} ---");
        
        // 1. सीधा null जांच
        Console.WriteLine($"  == null: {list == null}");
        
        // 2. Null-conditional Count
        Console.WriteLine($"  ?.Count: {list?.Count}");
        
        // 3. Null-conditional Any
        Console.WriteLine($"  ?.Any(): {list?.Any()}");
        
        // 4. ?? ऑपरेटर के साथ डिफॉल्ट
        Console.WriteLine($"  Count ?? -1: {list?.Count ?? -1}");
        Console.WriteLine($"  Any() ?? false: {list?.Any() ?? false}");
        
        // 5. पैटर्न मिलान
        Console.WriteLine($"  स्थिति: {list switch
        {
            null => "NULL",
            { Count: 0 } => "EMPTY",
            _ => $"HAS {list.Count} ITEMS"
        }}");
        
        Console.WriteLine();
    }
}

आउटपुट

--- Null सूची ---
  == null: True
  ?.Count: 
  ?.Any(): 
  Count ?? -1: -1
  Any() ?? false: False
  स्थिति: NULL

--- खाली सूची ---
  == null: False
  ?.Count: 0
  ?.Any(): False
  Count ?? -1: 0
  Any() ?? false: False
  स्थिति: EMPTY

--- भरी सूची ---
  == null: False
  ?.Count: 2
  ?.Any(): True
  Count ?? -1: 2
  Any() ?? false: True
  स्थिति: HAS 2 ITEMS

महत्वपूर्ण बिंदु

  • Null सूची और खाली सूची अलग अवधारणाएं हैं
  • Null सूची = कोई ऑब्जेक्ट आवंटित नहीं; खाली सूची = ऑब्जेक्ट आवंटित लेकिन 0 तत्व
  • हमेशा null जांच पहले करें या ?. ऑपरेटर उपयोग करें
  • List<T> एक रेफरेंस प्रकार है, इसलिए null हो सकता है
  • एपीआई डिजाइन में null के बजाय खाली सूची लौटाना बेहतर अभ्यास है (Null Object Pattern)
  • ?? (null-coalescing) ऑपरेटर डिफॉल्ट मान प्रदान करने के लिए उपयोगी
  1. JavaScript का उपयोग करके डबल लिंक्ड लिस्ट बनाना JavaScript का उपयोग करके डबल लिंक्ड लिस्ट बनाना

    आइए एक साधारण क्लास को परिभाषित करके शुरू करें जिसमें एक कंस्ट्रक्टर हो जो हेड और टेल को null पर इनिशियलाइज़ करता है। हम DoublyLinkedList क्लास के प्रोटोटाइप पर एक और स्ट्रक्चर भी परिभाषित करेंगे जो लिंक्ड लिस्ट में प्रत्येक नोड का प्रतिनिधित्व करेगा। उदाहरण class LinkedList {    construc

  1. HTML लिस्ट्स (सूचियाँ) HTML लिस्ट्स (सूचियाँ)

    परिचय HTML दस्तावेज़ में तीन प्रकार की सूचियाँ होती हैं: अक्रमित (Unordered) सूची, क्रमित (Ordered) सूची और विवरण (Description) सूची। अक्रमित HTML सूची (Unordered List) <ul> टैग से परिभाषित होती है जहां प्रत्येक सूची आइटम <li> टैग के बीच संलग्न होता है। डिफ़ॉल्ट रूप से बुलेट पॉइंट्स (डॉ

  1. AptWatcher पेश: आपके सर्वरों के लिए निर्बाध Apt पैकेज अपडेट प्रबंधन AptWatcher पेश: आपके सर्वरों के लिए निर्बाध Apt पैकेज अपडेट प्रबंधन

    हनीबैजर में हम अपने सभी सर्वरों पर apt पैकेज अपडेट की निगरानी के लिए apticron का उपयोग कर रहे थे। पहले apticron के ईमेल मेरे इनबॉक्स में आते थे, लेकिन किसी बिंदु पर मैंने तय किया कि मैं उन्हें अपने स्लैक नोटिफिकेशन चैनल में प्राप्त करना पसंद करूंगा। स्लैक में एक उपयोगी ईमेल ऐप है जो ईमेल प्राप्त करक