इंडेक्सर (प्रोग्रामिंग): Difference between revisions

From Vigyanwiki
(Created page with "{{Confusing|reason=is this a C# or a general OO concept? Surely the interesting thing is the use of the keyword 'this', not what is emphasised here? Why is this whole article...")
 
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Confusing|reason=is this a C# or a general OO concept? Surely the interesting thing is the use of the keyword 'this', not what is emphasised here? Why is this whole article only sourced to one C# forum post (the other forum post is a dead link). Maybe an example of use of the example class would demonstrate the purpose of the construct. Wikipedia is not a manual, guidebook or textbook [[WP:NOTHOWTO]].|date=April 2015}}
[[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] में, इंडेक्सर किसी विशेष वर्ग या संरचना के उदाहरणों को सारणिक के समान अनुक्रमित करने की अनुमति देता है।<ref>{{cite web|access-date=2011-08-01 |author=jagadish980 |date=2008-01-29 |website=SURESHKUMAR.NET FORUMS |title=C# - What is an indexer in C# |url=http://forums.sureshkumar.net/vb-asp-net-interview-technical-questions/16320-c-what-indexer-c.html |archive-url=https://web.archive.org/web/20090922193214/http://forums.sureshkumar.net/vb-asp-net-interview-technical-questions/16320-c-what-indexer-c.html |archive-date=September 22, 2009 }}</ref> इस प्रक्रिया को [[ऑपरेटर ओवरलोडिंग]] भी कहा जाता है।
[[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] में, एक इंडेक्सर किसी विशेष वर्ग या संरचना के उदाहरणों को सरणियों की तरह अनुक्रमित करने की अनुमति देता है।<ref>{{cite web|access-date=2011-08-01 |author=jagadish980 |date=2008-01-29 |website=SURESHKUMAR.NET FORUMS |title=C# - What is an indexer in C# |url=http://forums.sureshkumar.net/vb-asp-net-interview-technical-questions/16320-c-what-indexer-c.html |archive-url=https://web.archive.org/web/20090922193214/http://forums.sureshkumar.net/vb-asp-net-interview-technical-questions/16320-c-what-indexer-c.html |archive-date=September 22, 2009 }}</ref> यह [[ऑपरेटर ओवरलोडिंग]] का एक रूप है।


== कार्यान्वयन ==
== कार्यान्वयन ==
इंडेक्सर्स को गेट और सेट [[म्यूटेटर विधि]]यों के माध्यम से कार्यान्वित किया जाता है {{C_sharp|operator[]}}. वे [[संपत्ति (प्रोग्रामिंग)]] के समान हैं, लेकिन स्टेटिक विधि नहीं होने के कारण भिन्न हैं, और तथ्य यह है कि इंडेक्सर्स के एक्सेसर्स पैरामीटर लेते हैं। गेट और सेट एक्सेसर्स को इंडेक्सर घोषणा की पैरामीटर सूची का उपयोग करके विधियों के रूप में बुलाया जाता है, लेकिन सेट एक्सेसर में अभी भी निहित है {{C_sharp|value}} पैरामीटर।
इंडेक्सर्स को गेट और सेट [[म्यूटेटर विधि]] {{C_sharp|operator[]}} के माध्यम से कार्यान्वित किया जाता है, जो [[संपत्ति (प्रोग्रामिंग)]] के समान कार्य करती हैं, किन्तु स्टेटिक विधि नहीं होने के कारण यह भिन्न होती हैं, और इसलिए इसका अर्थ यह है कि इंडेक्सर्स के एक्सेसर्स पैरामीटर प्राप्त किये जाते हैं। गेट और सेट एक्सेसर्स को इंडेक्सर घोषणा की पैरामीटर सूची का उपयोग करके इसे विधियों के रूप में काॅल जाता है, किन्तु सेट एक्सेसर में अभी भी {{C_sharp|value}} पैरामीटर निहित रहते है।


== उदाहरण ==
== उदाहरण ==
यहाँ एक वर्ग में एक अनुक्रमणिका के उपयोग का C# उदाहरण दिया गया है:
यहाँ वर्ग में अनुक्रमणिका के उपयोग का C# में उक्त उदाहरण दिया गया है:<ref>{{cite web
<ref>{{cite web
| access-date = 2011-08-01
| access-date = 2011-08-01
| website= .net Funda
| website= .net Funda
| title      = C# Interview Questions
| title      = C# Interview Questions
| url        = https://www.dotnetfunda.com/interview/exam4161-what-is-an-indexer-in-csharp-.aspx}}</ref>
| url        = https://www.dotnetfunda.com/interview/exam4161-what-is-an-indexer-in-csharp-.aspx}}</ref>
<वाक्यविन्यास प्रकाश लैंग = csharp>
  class Family
वर्ग परिवार
{
    निजी सूची <स्ट्रिंग> _परिवार सदस्य = नई सूची <स्ट्रिंग> ();


सार्वजनिक परिवार (पैराम्स स्ट्रिंग [] सदस्य)
{
{
    private List<string> _familyMembers = new List<string>();
_familyMembers.AddRange (सदस्य);
}
public Family(params string[] members)
{
    _familyMembers.AddRange(members);
}
public string this[int index]
{
// The get accessor
get => _familyMembers[index];
// The set accessor with
set => _familyMembers[index] = value;
}
public int this[string val]
{
// Getting index by value (first element found)
get => _familyMembers.FindIndex(m => m == val);
}
public int Length => _familyMembers.Count;
}


सार्वजनिक स्ट्रिंग यह [इंट इंडेक्स]
उपयोगी उदाहरण के अनुसार
{
void Main()
// एक्सेसर प्राप्त करें
{
प्राप्त करें => _परिवार सदस्य [अनुक्रमणिका];
    var doeFamily = new Family("John", "Jane");
    for (int i = 0; i < doeFamily.Length; i++)
    {
        var member = doeFamily[i];
        var index = doeFamily[member]; // same as i in this case, but it demonstrates indexer overloading allowing to search doeFamily by value.
        Console.WriteLine($"{member} is the member number {index} of the {nameof(doeFamily)}");
    }
}


// सेट एक्सेसर के साथ
इस उदाहरण में, अनुक्रमणिका का उपयोग nवें स्थान पर मान प्राप्त करने के लिए किया जाता है, और उसके पश्चात इसके मान को संदर्भित सूची में इसकी स्थिति प्राप्त करने के लिए उपयोग किया जाता है।
सेट => _परिवार सदस्य [अनुक्रमणिका] = मूल्य;
}


सार्वजनिक int [स्ट्रिंग वैल]
इस प्रकार कोड का आउटपुट कुछ इस प्रकार होता है:
{
John is the member number 0 of the doeFamily
// मूल्य द्वारा सूचकांक प्राप्त करना (पहला तत्व मिला)
get => _familyMembers.FindIndex (एम => एम == वैल);
}


सार्वजनिक int लंबाई => _familyMembers.Count;
  Jane is the member number 1 of the doeFamily
}
</वाक्यविन्यास हाइलाइट>
 
उपयोग उदाहरण:
 
<वाक्यविन्यास प्रकाश लैंग = csharp>
शून्य मुख्य ()
{
    var doeFamily = नया परिवार (जॉन, जेन);
    for (int i = 0; i <doeFamily.Length; i++)
    {
        var सदस्य = doeFamily [i];
        var index = doeFamily [सदस्य]; // इस मामले में i जैसा ही है, लेकिन यह इंडेक्सर ओवरलोडिंग को प्रदर्शित करता है जिससे doeFamily को मूल्य से खोजा जा सकता है।
        कंसोल.राइटलाइन ($ {सदस्य} {nameof(doeFamily)} की सदस्य संख्या {इंडेक्स} है);
    }
}
</वाक्यविन्यास हाइलाइट>
 
इस उदाहरण में, अनुक्रमणिका का उपयोग nवें स्थान पर मान प्राप्त करने के लिए किया जाता है, और उसके बाद उसके मान द्वारा संदर्भित सूची में स्थिति प्राप्त करने के लिए किया जाता है।
कोड का आउटपुट है:
  जॉन doeFamily का सदस्य संख्या 0 है
जेन doeFamily की सदस्य संख्या 1 है


== यह भी देखें ==
== यह भी देखें ==
Line 66: Line 62:
== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}
 
 
<!--Categories-->[[Category: प्रोग्रामिंग भाषा विषय]] [[Category: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] [[Category: ऑपरेटर्स (प्रोग्रामिंग)]]
 
 
{{compu-prog-stub}}
{{compu-prog-stub}}


 
[[Category:All stub articles]]
 
[[Category:Articles with example C Sharp code]]
[[Category: Machine Translated Page]]
[[Category:Computer programming stubs]]
[[Category:Created On 17/02/2023]]
[[Category:Created On 17/02/2023]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Templates Vigyan Ready]]
[[Category:ऑपरेटर्स (प्रोग्रामिंग)]]
[[Category:ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]]
[[Category:प्रोग्रामिंग भाषा विषय]]

Latest revision as of 13:18, 14 September 2023

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, इंडेक्सर किसी विशेष वर्ग या संरचना के उदाहरणों को सारणिक के समान अनुक्रमित करने की अनुमति देता है।[1] इस प्रक्रिया को ऑपरेटर ओवरलोडिंग भी कहा जाता है।

कार्यान्वयन

इंडेक्सर्स को गेट और सेट म्यूटेटर विधि operator[] के माध्यम से कार्यान्वित किया जाता है, जो संपत्ति (प्रोग्रामिंग) के समान कार्य करती हैं, किन्तु स्टेटिक विधि नहीं होने के कारण यह भिन्न होती हैं, और इसलिए इसका अर्थ यह है कि इंडेक्सर्स के एक्सेसर्स पैरामीटर प्राप्त किये जाते हैं। गेट और सेट एक्सेसर्स को इंडेक्सर घोषणा की पैरामीटर सूची का उपयोग करके इसे विधियों के रूप में काॅल जाता है, किन्तु सेट एक्सेसर में अभी भी value पैरामीटर निहित रहते है।

उदाहरण

यहाँ वर्ग में अनुक्रमणिका के उपयोग का C# में उक्त उदाहरण दिया गया है:[2]

  class Family
{
    private List<string> _familyMembers = new List<string>();

	public Family(params string[] members)
	{
	    _familyMembers.AddRange(members);
	}

	public string this[int index]
	{
		// The get accessor
		get => _familyMembers[index];

		// The set accessor with 
		set => _familyMembers[index] = value;
	}

	public int this[string val]
	{
		// Getting index by value (first element found)
		get => _familyMembers.FindIndex(m => m == val);
	}

	public int Length => _familyMembers.Count;
}

उपयोगी उदाहरण के अनुसार

void Main()
{
    var doeFamily = new Family("John", "Jane");
    for (int i = 0; i < doeFamily.Length; i++)
    {
        var member = doeFamily[i];
        var index = doeFamily[member]; // same as i in this case, but it demonstrates indexer overloading allowing to search doeFamily by value.
        Console.WriteLine($"{member} is the member number {index} of the {nameof(doeFamily)}");
    }
}

इस उदाहरण में, अनुक्रमणिका का उपयोग nवें स्थान पर मान प्राप्त करने के लिए किया जाता है, और उसके पश्चात इसके मान को संदर्भित सूची में इसकी स्थिति प्राप्त करने के लिए उपयोग किया जाता है।

इस प्रकार कोड का आउटपुट कुछ इस प्रकार होता है:

John is the member number 0 of the doeFamily
Jane is the member number 1 of the doeFamily

यह भी देखें

  • म्यूटेटर विधि

संदर्भ

  1. jagadish980 (2008-01-29). "C# - What is an indexer in C#". SURESHKUMAR.NET FORUMS. Archived from the original on September 22, 2009. Retrieved 2011-08-01.
  2. "C# Interview Questions". .net Funda. Retrieved 2011-08-01.