C# Partial Class

C# Partial Class: जब हम Production Level Class Create कर रहे होते हैं, तब किसी भी Class में हजारों Lines के Codes हो सकते हैं। इसलिए जब एक Single C# File में हम किसी Class को Define करते हैं, तो हमारी File काफी बडी हो सकती है। साथ ही जब हम Class Create करते हैं, तब अक्सर बहुत सारे ऐसे Codes होते हैं, जिन्हें एक बार Implement कर देने के बाद Ignore किया जा सकता है। यानी उन Codes को कभी भी फिर से Check करने की जरूरत नहीं रहती।

उदाहरण के लिए किसी Class में Define किए गए Data Fields, Properties व Constructors को एक बार Define कर देने के बाद हमें उन्हें फिर से देखने की जरूरत नहीं रहती और हम अपनी Define की जाने वाली Class पर ही पूरा Attention देते हुए, इन्हें Ignore कर सकते हैं।

क्योंकि पूरी Class के Production के दौरान ये सभी Members समान ही रहते हैं, जबकि Class में Define किए जाने वाले Methods को हमें समय&समय पर विभिन्न प्रकार की जरूरतों को पूरा करने के लिए बार&बार Modify करने की जरूरत पडती है।

इसलिए C# में partial नाम के Contextual Keyword की व्‍यवस्था की गई है, जिसका प्रयोग करके हम किसी Class को एक से ज्यादा C# Files में Split कर सकते हैं और कम Modify किए जाने वाले Members को ज्यादा Modify किए जाने वाले Members से अलग रखते हुए अपनी Production Class को ज्यादा बेहतर तरीके से Manage व Maintain कर सकते हैं।

C# Partial Class and Partial Types

Class के Definition को भी हम कई Partial Class Definitions में Divide कर सकते हैं। यानी हर Partial Class Definition में कुछ और Class Members का Declaration होता है। साथ ही Partial Class Definition समान File में भी हो सकता है और किसी अलग File में भी।

हर Partial Class के साथ partial class Combination को Specify करना जरूरी होता है। Partial Class का Definition एक Normal Class के Definition के समान ही होता है। अन्तर केवल इतना ही होता है कि Partial Class में एक Extra partial शब्द का प्रयोग किया गया होता है। जैसे:

    partial class Person
    {
	// Data Members
	//Methods
    }

Partial Class Define करने के लिए Use किया जाने वाला partial शब्द कोई Keyword नहीं होताए इसलिए इसे class, struct या interface से Just पहले Specify करने अलावा पूरे Program में कहीं पर भी एक Simple Identifier की तरह भी Use कर सकते हैं, क्योंकि class, struct या interface के साथ इन्हें Specify करने पर Compiler को ये Instruction मिलता है कि Define होने वाला class, struct या interface एक Partial Class, Structure या Interface है।

C# Partial Class - Hindi

जैसाकि इस चित्र द्वारा हम समझ सकते हैं कि चित्र के Left Side में Define Class को ही यदि हम Partial Class के रूप में Define करना चाहें, तो चित्र के Right Side में दर्शा, अनुसार हम समान Class को दो टुकडों में विभाजित करते हुए Partial Classes के रूप में दो अलग Files में Define कर सकते हैं।

जब हम उपरोक्त चित्रानुसार एक से ज्यादा Files के बीच किसी Class को Partially Implement करते हैं, तो Class को Compile करते समय सभी Partial Classes को एक साथ Compile करना जरूरी होता है।

क्योंकि Partial Classes Define करके हम Compiler को यही Instruction देते हैं कि सभी Partial Classes वास्तव में एक Single Class के Implementations ही हैं, जिन्हें अलग-अलग टुकडों में Define किया गया है।

Visual Studio इस Feature को अपने Standard Windows Program Templates में Use करता है। यानी जब हम Visual Studio Templates का प्रयोग करके ASP.NET Project, Windows Forms Project या Windows Presentation Foundation (WPF) Project Create करते हैं, तो सभी Templates हर Web Page, Form या WPF Window के लिए दो Files Create करते हैं, जो कि Class का Partial Implantation होते हैं।

जब हम ASP.NET या Windows Forms Project Create करते हैं, तब Create होने वाली दो Files में से एक में Visual Studio द्वारा Automatically Generated Codes होते हैं, जो कि Page के Components को Declare करते हैं। हमें इस File में Specified Partial Class को कभी भी Modify नहीं करना चाहिए] क्योंकि हम जैसे-जैसे अपने Web Page में परिवर्तन करते हैं, Visual Studio इस File के विभिन्न Components को स्वयं ही Modify करता है। जबकि दूसरी File में वह Partial Class होती है, जिसे Implement करके हम हमारे Web Page के Form या Page के Look व Behavior को Implement करते हैं।

Partial Methods

Partial Types (Class, Structure, Interface) के साथ ही हम Partial Methods भी Define कर सकते हैं। Partial Methods ऐसे Methods होते हैं, जिन्हें Partial Class के विभिन्न Parts में Define किया जाता है। Partial Methods के विभिन्न हिस्सों को Partial Class के विभिन्न Parts या समान Class में Define किया जाता है।

Partial Methods के मूल रूप से दो हिस्से होते हैं। पहले हिस्से के अन्तर्गत Partial Method का Declaration या Prototype होता है, जो कि Method के नाम] Return Type व Parameter List के Signature को Specify करता है। जबकि Partial Method के दूसरे Part में Partial Method की पूरी Definition Specify करके उसे Implement किया जाता है।

जब हम Partial Methods Create करते हैं, तब ये जरूरी होता है कि Partial Method का Declaration व Definition का Prototype यानी Signature पूरी तरह से Match हो। Partial Method का Return Type हमेंशा void होता है और Signature के साथ किसी Access Modifier का प्रयोग नहीं किया जाताए क्योंकि सभी Partial Methods Implicitly Private होते हैं।

साथ ही Partial Methods के Parameter List में out Parameter को Specify नहीं किया जा सकता। जबकि Contextual Keyword partial को Partial Method के Declaration (Prototype) व Implementation(Definition), दोनों स्थानों पर Return Type void से Just पहले Specify करना जरूरी होता है।

इसके अलावा हमें एक और बात ध्‍यान रखनी होती है कि बिना Partial Method का Declaration किए हुए हम उसका Implementation नहीं कर सकते। इसी तरह से यदि हम Partial Method का केवल Declaration ही करते हैं, Definition Create नहीं करते, तो C# Compiler इस तरह के Declaration को व इस Declaration के आधार पर किए गए किसी भी Method Call को Remove कर देता है।

// File Name: PartialMethodDeclaraionAndImplementation.cs
using System;

namespace CSharpClass
{
    partial class MyClass
    {
        partial void PrintSum(int x, int y); 		// Declaring partial method (Prototype)

        public void Add(int x, int y)
        {
            PrintSum(x, y);
        }
    }

    partial class MyClass
    {
        partial void PrintSum(int x, int y) 		// Implementing partial method (Definition)
        {
            Console.WriteLine("Sum is {0}", x + y);
        }
    }

    class Program
    {
        static void Main()
        {
            var myObj = new MyClass();
            myObj.Add(15, 5);
        }
    }
}

// Output:
	Sum is 20

जैसाकि हम इस Program में देख सकते हैं कि हमने PrintSum() Method को एक Partial Method की तरह दो हिस्सों में Define किया है। MyClass के पहले Part में हमने Method के Declaration को जबकि दूसरे Part में Method के Implementation को Specify किया है। हालांकि हमने Method के दोनों ही Parts को समान File में ही Define किया है। लेकिन यदि हम चाहें, तो हम इन्हे दो अलग Files में भी Define कर सकते हैं।

हालांकि हमने PrintSum() Partial Method को Class के दूसरे Part में Define किया है, लेकिन फिर भी ये Method Normal तरीके से काम करते हुए Add() Method द्वारा Accessible रहता है और Main() Method में Specify किए गए मान 155 के जोड को Output में Return करता है।

चूंकि Partial Methods Implicitly Private होते हैं, इसलिए PrintSum() Method को किसी External Class में Use नहीं किया जा सकता। इसीलिए हमनें इस Program में Add() नाम का एक Public Method Define किया है और PrintSum() नाम के Partial Method को इस Add() नाम के Public Method के माध्‍यम से External Class में Use किया है।

क्योंकि Main() Method में हमने MyClass Type का myObj नाम का एक Object Create किया है और इस Object के लिए Class के Add() नाम के Public Method को Call किया है, जो कि Internally PrintSum() नाम के Private Partial Method को Call करते हुए दो संख्‍याओं को योग Return कर रहा है और हमें उपरोक्तानुसार Output प्राप्त हो रहा है।

// File Name: PartialMethodDeclaraionAndImplementation.cs
using System;

namespace CSharpClass
{
    partial class MyClass
    {
        partial void PrintSum(int x, int y); 		// Declaring partial method (Prototype)

        public void Add(int x, int y)
        {
            PrintSum(x, y);
        }
    }

    partial class MyClass
    {
        partial void PrintSum(int x, int y) 		// Implementing partial method (Definition)
        {
            Console.WriteLine("Sum is {0}", x + y);
        }
    }

    class Program
    {
        static void Main()
        {
            var myObj = new MyClass();
            myObj.Add(15, 5);
        }
    }
}

// Output:
	Sum is 20

C# in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW GET DEMO REVIEWS