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

this

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

समान नाम को this क्यों चाहिए

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

Tin with this in constructor

csharp
using System;

public class Tin
{
    int size;

    Tin(int size)
    {
        this.size = size;
    }
}

Pine एक tin बनाता है

Pine में public static void Main() रहता है। Main के अंदर लिखें Tin t = new Tin(7); फिर Console.WriteLine(t.size);। आर्ग्युमेंट 7 कंस्ट्रक्टर पैरामीटर size बन जाता है। कंस्ट्रक्टर उसे this.size = size; से संग्रहीत करता है। इस पेज पर अलग t.size = 7; पंक्ति की ज़रूरत नहीं। इस पेज पर आप Box b = new Box(4); नहीं लिखते। वह कंस्ट्रक्टर पाठ था।

Pine builds one tin

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Tin t = new Tin(7);
        Console.WriteLine(t.size);
    }
}

public class Tin
{
    int size;

    Tin(int size)
    {
        this.size = size;
    }
}

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

this.size और size साथ-साथ

एक छोटी टेबल कंस्ट्रक्टर के अंदर रहते हुए दोनों नाम साफ़ रखती है।

📊 this.size vs size

Name What it means in Tin(int size)
size alone the parameter that entered the constructor
this.size the field on the object being built
this.size = size; store the parameter into the field
size = size; does not update the field
टेबल केवल याद दिलाने के लिए है। जो टाइप की गई पंक्ति आप रखते हैं वह कंस्ट्रक्टर के अंदर this.size = size; है, फिर Pine में Tin t = new Tin(7); और Console.WriteLine(t.size);।

कंस्ट्रक्टर पेज से तुलना

कंस्ट्रक्टर पेज पर Box(int n) { size = n; } काम करता था क्योंकि n और size अलग शब्द थे। वह आकार अभी भी काम करता है। यह पेज जानबूझकर वही शब्द दो बार इस्तेमाल करता है ताकि आपको this चाहिए। बचा Box डेमो जिसमें size = n; हो, अलग पाठ है। इस पेज के लिए Tin और Pine और this.size = size; रखें।
केवल Console.WriteLine(t); लिखना साफ़ 7 नहीं दिखाता। संग्रहीत संख्या देखने के लिए Console.WriteLine(t.size); लिखें। अकेला ऑब्जेक्ट रेफ़रेंस फ़ील्ड मान नहीं है।
दूसरे दिनों आप अभी भी अलग पैरामीटर नाम चुन सकते हैं। यह पाठ जानबूझकर मिलते नाम चुनता है। इस पेज के Tin डेमो में n और this न मिलाएँ। एक साफ़ पथ काफी है: मिलते नाम, फ़ील्ड पर this, फ़ील्ड लिखना।

दो tin अभी भी अलग रहते हैं

हर new Tin(...) अलग ऑब्जेक्ट के लिए कंस्ट्रक्टर फिर चलाता है। आप लिख सकते हैं Tin a = new Tin(2); और Tin b = new Tin(9);, फिर दोनों size फ़ील्ड लिखें। हर कॉल अपने ऑब्जेक्ट पर this.size = size; इस्तेमाल करती है। दोनों ऑब्जेक्ट एक ही size स्लॉट साझा नहीं करते। उस जाँच के लिए दूसरी कोड बॉक्स की ज़रूरत नहीं — जब आप पहले ही 7 देख चुके हों तो Pine में संख्याएँ बदलें, या सिंगल-tin डेमो को सेव की गई फ़ाइल रखें।
अगर दोनों पंक्तियाँ 0 दिखाएँ, कंस्ट्रक्टर में बाईं ओर अभी भी this नहीं है। अगर बिल्ड Pine कंपाइल करते समय Tin नहीं ढूँढ पाए, जाँचें कि public class Tin उसी फ़ाइल में है।

यह पेज इंस्टेंस मेथड के लिए क्या छोड़ता है

यह पेज this को केवल कंस्ट्रक्टर के अंदर फ़ील्ड संग्रहीत करने के लिए इस्तेमाल करता है। बाद का पेज — इंस्टेंस मेथड — ऐसे मेथड दिखाता है जो ऑब्जेक्ट पर चलते हैं और फ़ील्ड पढ़ या बदल सकते हैं। यहाँ कंस्ट्रक्टर संग्रह पर रहें। इस पाठ के लिए Tin पर अतिरिक्त मेथड न गढ़ें जब तक आप पहले से न जानते हों; पाठ का लक्ष्य है this.size = size जब नाम मिलें।
Tin को Pine के ब्रेसेस के अंदर नेस्ट न करें। इस पेज पर दोनों क्लास फ़ाइल में सहोदर की तरह बैठती हैं। अगर Pine में अभी भी कंस्ट्रक्टर डेमो से Box b = new Box(4); है और इस फ़ाइल में मिलती Box क्लास नहीं जिसे आप रखना चाहते हों, वह पंक्ति हटा दें। रखें Tin t = new Tin(7); और Console.WriteLine(t.size);। जब आप Tin पढ़ा रहे हों बिल्ड आपके लिए Box नहीं गढ़ता।

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

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

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

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

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

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

📝 निर्देश

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