लोड हो रहा है...

कंस्ट्रक्टर

क्लास Box लिखें जिसमें int फ़ील्ड size हो और कंस्ट्रक्टर Box(int n) जो size = n; रखे। Pine में Main रखें और Box b = new Box(4); से एक box बनाएँ, फिर b.size लिखें। दोनों टाइप उसी शिक्षण फ़ाइल में रखें ताकि dotnet run सरल रहे। dotnet run से चलाएँ। स्क्रीन पर एक पंक्ति दिखनी चाहिए: 4। जो संख्या आप new को देते हैं वह कंस्ट्रक्टर तक पहुँचती है, और कंस्ट्रक्टर Main आगे बढ़ने से पहले उसे ऑब्जेक्ट पर संग्रहीत करता है। निर्माण के समय फ़ील्ड सेट करना — कंस्ट्रक्टर के अंदर — इस पेज का पाठ है। शुरू करने वाली पब्लिक क्लास का नाम Pine रखें।

वह मेथड जो new बनाने पर चलता है

कंस्ट्रक्टर का नाम क्लास जैसा ही होता है। न तो void रिटर्न टाइप है, न कोई और रिटर्न टाइप। जब Main लिखता है new Box(4), C# ऑब्जेक्ट बनाता है और वह कंस्ट्रक्टर 4 को n मानकर चलाता है। कंस्ट्रक्टर खत्म होने के बाद चर तैयार ऑब्जेक्ट रखता है। इस पेज का पूरा काम यही है: new को मान दें, कंस्ट्रक्टर को फ़ील्ड पर संग्रहीत करने दें, फिर फ़ील्ड लिखें ताकि देख सकें कि संग्रह काम किया।
Pine फ़ाइल खोलें। शुरू करने वाली क्लास का नाम Pine ही रहता है। यह पेज स्टार्टर का नाम नहीं बदलता। अगर अभी भी c.fill = 3; बचा है और वही Main में सब कुछ है, उसे हटा दें। कोई भी बची Cup क्लास हटा दें। कोई भी ReadLine पंक्ति हटा दें। जो फ़ाइल आप रखते हैं वह टाइपिंग का इंतज़ार नहीं करती।
Pine के ब्रेसेस के बाहर — फिर भी उसी फ़ाइल में — लिखें public class Box। ब्रेसेस के अंदर घोषित करें int size;। फिर कंस्ट्रक्टर लिखें: Box(int n) { size = n; }। इस पेज पर पैरामीटर नाम size से अलग रखें ताकि बिना this शब्द के असाइनमेंट साफ़ रहे। इस पेज पर Box में कोई Main नहीं है। चलाने से पहले फ़ाइल सेव करें।
फ़ील्ड पंक्ति अकेले 4 को ऑब्जेक्ट में नहीं डालती। कंस्ट्रक्टर का बॉडी तब वह काम करता है जब new उसे बुलाता है। अगर आप कंस्ट्रक्टर छोड़ दें और केवल फ़ील्ड घोषित करें, बाद में new Box(4) मेल नहीं खाएगा, और बिल्ड कॉल की शिकायत करेगा। Box में दोनों टुकड़े रखें: फ़ील्ड और वह कंस्ट्रक्टर जो उसमें लिखता है।

Box with constructor

csharp
using System;

public class Box
{
    int size;

    Box(int n)
    {
        size = n;
    }
}

Pine संख्या 4 को new Box में देता है

Pine में public static void Main() रहता है। Main के अंदर लिखें Box b = new Box(4); फिर Console.WriteLine(b.size);। आर्ग्युमेंट 4 कंस्ट्रक्टर पैरामीटर n में जाता है। इस पेज पर अलग b.size = 4; पंक्ति की ज़रूरत नहीं — कंस्ट्रक्टर पहले ही मान संग्रहीत कर चुका है। लिखने की पंक्ति इसलिए है कि बिना अंदाज़ा लगाए कंस्ट्रक्टर के काम पर भरोसा कर सकें। इस पेज पर आप c.fill = 3; नहीं लिखते। वह फ़ील्ड पाठ था।

Pine builds one box

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Box b = new Box(4);
        Console.WriteLine(b.size);
    }
}

public class Box
{
    int size;

    Box(int n)
    {
        size = n;
    }
}

रखी हुई फ़ाइल ऊपर से पढ़ें। using System; छोटे नाम तैयार करता है। public class Pine स्टार्टर है। public static void Main() वह जगह है जहाँ रनटाइम शुरू होता है। व्यंजक new Box(4) एक Box बनाता है और Box(int n) को n बराबर 4 के साथ बुलाता है। बॉडी लिखती है size = n, इसलिए उस ऑब्जेक्ट का size बन जाता है 4। फिर Main लिखता है b.size और स्क्रीन 4 दिखाती है। और कुछ प्रिंट नहीं होना चाहिए।
dotnet run से चलाएँ। प्रोग्राम एक पंक्ति लिखता है और रुक जाता है। वह आपके टाइप करने का इंतज़ार नहीं करता। अगर dotnet run इंतज़ार करे, तो ReadLine अभी फ़ाइल में है। उस पंक्ति को हटाएँ और Pine में new Box(4) के साथ लिखना रखें, Box में कंस्ट्रक्टर के साथ। स्क्रीन 4 दिखाती है। अगर स्क्रीन 3 दिखाए, तो बचा c.fill = 3; पथ अभी चल रहा है। अगर स्क्रीन ok दिखाए, तो पुराना Chip डेमो अभी फ़ाइल में हो सकता है। गलत पंक्ति दिखने पर आप .NET SDK दोबारा इंस्टॉल नहीं करते।
अगर आप बिना आर्ग्युमेंट new Box() लिखें जबकि अकेला कंस्ट्रक्टर एक int चाहता है, बिल्ड मना कर देता है। कॉल को कंस्ट्रक्टर की पैरामीटर सूची से मिलाएँ। अगर कंस्ट्रक्टर नाम से पहले void लगाएँ, वह सामान्य मेथड बन जाता है, कंस्ट्रक्टर नहीं, और new Box(4) उस बॉडी को इस पेज की अपेक्षा के अनुसार नहीं चलाएगा। हेडर Box(int n) जैसा होना चाहिए, न कि void Box(int n), और न static int Box(int n)।

new के बाद असाइन से तुलना

फ़ील्ड पेज पर आप new Cup() के बाद c.fill = 3; लिखते थे। वह अभी भी काम करता है। यह पेज संग्रह को कंस्ट्रक्टर के अंदर ले जाता है ताकि मान ऑब्जेक्ट बनते समय सेट हो। बचा Cup डेमो जिसमें c.fill = 3; हो, अलग पाठ है। इस पेज के लिए Box और Pine और new Box(4) रखें। अगर Pine में अभी भी c.fill = 3; है और इस फ़ाइल में Cup क्लास नहीं है, वह पंक्ति हटा दें। बिल्ड आपके लिए Cup नहीं बनाता।
केवल Console.WriteLine(b); लिखना साफ़ 4 नहीं दिखाता। संग्रहीत संख्या देखने के लिए Console.WriteLine(b.size); लिखें। अकेला ऑब्जेक्ट रेफ़रेंस फ़ील्ड मान नहीं है। वह पैटर्न आप फ़ील्ड पेज पर सीख चुके हैं; कंस्ट्रक्टर का काम जाँचते समय यहाँ भी रखें।
दूसरे प्रोग्रामों में आप अभी भी new के बाद फ़ील्ड असाइन कर सकते हैं। यह पाठ बस कंस्ट्रक्टर पथ चुनता है ताकि पहला उपयोगी मान निर्माण के समय आए। इस पेज के Pine डेमो में दोनों शैलियाँ न मिलाएँ। एक साफ़ पथ काफी है: new को आर्ग्युमेंट, कंस्ट्रक्टर में संग्रह, फ़ील्ड लिखना।

दो box, दो size

हर new Box(...) अलग ऑब्जेक्ट के लिए कंस्ट्रक्टर फिर चलाता है। आप लिख सकते हैं Box a = new Box(2); और Box b = new Box(9);, फिर दोनों size फ़ील्ड लिखें। पहली कॉल एक ऑब्जेक्ट पर 2 संग्रहीत करती है। दूसरी कॉल दूसरे ऑब्जेक्ट पर 9। दोनों ऑब्जेक्ट एक ही size स्लॉट साझा नहीं करते।

Pine builds two boxes

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Box a = new Box(2);
        Box b = new Box(9);
        Console.WriteLine(a.size);
        Console.WriteLine(b.size);
    }
}

public class Box
{
    int size;

    Box(int n)
    {
        size = n;
    }
}

फिर dotnet run से चलाएँ। स्क्रीन पर एक पंक्ति में 2 और अगली में 9 दिखना चाहिए। हर कंस्ट्रक्टर कॉल ने अपना आर्ग्युमेंट अपने ऑब्जेक्ट पर संग्रहीत किया। Box b = a; लिखना दूसरा ऑब्जेक्ट नहीं बनाता — दो size चाहिए तो दो new Box(...) कॉल करें। रेफ़रेंस कॉपी करना कंस्ट्रक्टर को दो बार बुलाने के बराबर नहीं है।
अगर दोनों पंक्तियाँ एक ही संख्या दिखाएँ, जाँचें कि हर new अलग आर्ग्युमेंट देता है और आप उसी क्रम में a.size और b.size लिखते हैं। अगर बिल्ड दूसरे new पर रुके, गायब कोष्ठक या पुराने आकार से गलत क्लास नाम देखें। दूसरी कॉल में छोटी गलतियाँ आम हैं जब आप पहली पंक्ति पेस्ट करते हैं और आर्ग्युमेंट बदलना भूल जाते हैं।

यह this के लिए क्या छोड़ता है

यह पेज अलग नामों के साथ size = n; लिखता है। बाद का पेज — this — दिखाता है जब नाम टकराएँ तो ऑब्जेक्ट के अपने फ़ील्ड की बात कैसे करें। यहाँ साफ़ पैरामीटर नाम n पर रहें। इस पेज पर this.size न गढ़ें जब तक आप पहले से न जानते हों; पाठ का लक्ष्य new से कंस्ट्रक्टर कॉल है। शब्द this अगला विषय है, आज n को size में संग्रहीत करने की शर्त नहीं।
Box को Pine के ब्रेसेस के अंदर नेस्ट न करें। इस पेज पर दोनों क्लास फ़ाइल में समान स्तर पर बैठती हैं। अगर बिल्ड Pine कंपाइल करते हुए Box न पाए, जाँचें कि public class Box उसी फ़ाइल में है। अगर स्क्रीन 0 दिखाए, कंस्ट्रक्टर में असाइनमेंट गायब हो सकता है, या Main अभी बिना-आर्ग्युमेंट आकार इस्तेमाल करता हो जो कभी size सेट नहीं करता — रखें Box(int n) { size = n; } और new Box(4)। स्क्रीन पर शून्य आमतौर पर मतलब फ़ील्ड डिफ़ॉल्ट पर रह गया क्योंकि संग्रह नहीं चला।

आप घोषित कर सकते हैं int size;, लिख सकते हैं Box(int n) { size = n; }, और Pine.Main से Box b = new Box(4); से बना सकते हैं। dotnet run से चलाएँ। स्क्रीन 4 दिखाती है। कंस्ट्रक्टर तब चलता है जब new ऑब्जेक्ट बनाता है। आपने निर्माण के समय संख्या दी, कंस्ट्रक्टर ने फ़ील्ड पर संग्रहीत किया, और लिखने ने संग्रह साबित किया। कंस्ट्रक्टर को उस सेटअप की तरह देखें जो Main के new के बाद आगे बढ़ने से पहले चलता है। Pine वही दरवाज़ा है जो आप dotnet run से खोलते हैं। अगला पेज this है, जहाँ आप मेथड और कंस्ट्रक्टर के अंदर ऑब्जेक्ट के अपने फ़ील्ड नामने का दूसरा तरीका सीखते हैं।
कंस्ट्रक्टर हेडर बिना void रखें। new पर आर्ग्युमेंट रखें। b.size पर लिखना रखें। ये तीन आदतें आगे बढ़ने से पहले इस पेज का चेकपॉइंट हैं।

🧠 अपने ज्ञान की परीक्षा करें

शुरू करने के लिए तैयार

अपने ज्ञान की परीक्षा करें

इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं

❓
5
प्रश्न
🎯
70%
पास करने के लिए
♾️
∞
समय
🔄
∞
प्रयास

📝 निर्देश

  • हर प्रश्न को ध्यान से पढ़ें
  • हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
  • आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
  • आपकी प्रगति शीर्ष पर दिखाई जाएगी