Showing posts with label csharp. Show all posts
Showing posts with label csharp. Show all posts

Thursday, May 13, 2021

c# ஸ்டேடிக் மெம்பர்கள்.

 



இந்த கட்டுரையியில் static என்ற கீ வேர்டு பற்றியும் c# -ல் அந்த கீவேர்டு எவ்வாறெல்லாம் பயன்படுகின்றது என்பது பற்றியும் காண இருக்கின்றோம்.

ஸ்டேட்டிக் கன்ஸ்ட்ரக்டர்கள், ஸ்டேட்டிக் மெதட்கள், ஸ்டேட்டிக் பிராப்பர்ட்டிகள் எவ்வாறு செயற்படுகின்றன என்பது குறித்து காண இருக்கின்றோம்.

C#-ல் ஸ்டேட்டிக் என்பது என்ன?

ஸ்டேட்டிக்  கீவேர்டு ஆனது பின் வருவனவற்றிற்கு பயன்படுத்தப்படுகின்றது

1. கிளாஸ்

2. கன்ஸ்ட்ரக்டர்

3. ஃபீல்டு

4. பிராப்பர்ட்டி

5. மெத்தட்

6. ஈவண்ட்

ஸ்டேட்டிக் கீவேர்டு சேர்க்கப்படும் பொழுது இந்த மெம்பர் non-instantiable ஆகின்றது. இந்த  மெம்பர்கள் கிளாஸ் பெயர் மூலமே ஆக்சஸ் செய்யப்படுகின்றது.

ஸ்டட்டிக்   மெம்பர்கள்.

ஸ்டேட்டிக் வேரியபள் ஆனது மெமரியில் ஒரே ஒரு காப்பி மட்டும் இருக்கும்.கடைசி ஆக அந்த மெம்பருக்கு என்ன மதிப்பிருத்தப்பட்டதோ அதே

மதிப்பு அதுவே அதன் மதிப்பாகும்.

ஒரு கிளாஸ்  ஆனது பின் வரும் சூழ்நிலைகளில் லோட் ஆகின்றது.

ஸ்டேட்டிக் மெம்பர்கள் முதன் முறையாக ஆக்சஸ் செய்யப்படும் பொழுது அல்லது கிளாசின் முதல் இன்ஸ்டன்ஸ் மெம்பர் உருவாக்கப்படும் பொழுது ஆகும்.

ஒரு கிளாஸ் ஒரு தடவை லோட் ஆகி விட்டால் கடைசி வரை மெமரியில் இருக்கும் அதுபோல் ஸ்டேட்டிக் மெம்பர்களும் கடைசிவரை மெமரியில் இருக்கும்.

ஒவ்வொரு இன்ஸ்டன்ஸ் மெம்பருக்கும் தனிதனி மெமரி இருக்கும்.ஆனால் ஸ்டேட்டிக் மெம்பர்கள் ஒரு பொதுவான மெமரியையே பயன்படுத்திக் கொள்ளும்.

கிளாஸ் லோட் ஆகும் பொழுதே ஸ்டேட்டிக் மெம்பர்களுக்கு மெமரி ஒதுக்கீடு செய்யபடுகின்றது.கிளாஸிக்கு வெளியே ஸ்டேட்டிக் மெம்பர்கள் கிளாஸ் பெயர் கொண்டு ஆக்சஸ் செய்யப்படுகின்றது.

ஸ்டேட்டிக் கன்ஸ்ட்ரக்டர்கள்.

1. இந்த கன்ஸ்ட்ரக்டர் ஸ்டேட்டிக்  என்ற கீவேர்டு உடன் அறிவிக்கப்படுகின்றது.

2. இந்த கன்ஸ்ட்ரக்டர் ஸ்டேட்டிக் வேரியபிள்களுக்கு டைனமிக் ஆக(நிரல் இயங்குன் நேரத்தில்) மதிப்பிருத்தப்பட பயன்படுகின்றது.

3. இது கிளாஸ் லோட் ஆகும் பொழுது இன்ஸ்டன்ஸ் கன்ஸ்ட்ரக்டர்களும் இயங்குவதற்கு முன்னே செயற்படுகின்றது.

முதன் ஆப்ஜெக்ட் உருவாக்கப்படும் பொழுது பின் வரும் முறையில் ஈவண்ட் நடக்கின்றது.

1. கிளாஸ் லோட் ஆகின்றது.

2. ஸ்டேட்டிக் மெம்பர்கள் லோட் ஆகி மெமரி ஒதுக்கீடு செய்யப்படுகின்றது.

3. ஸ்டேட்டிக் கண்ஸ்ட்ரக்டர் செயற்படுத்தப்படுகின்றது.

4. ஆப்ஜெக்டுகள் உருவாக்கப்பட்டு மெமரி ஒதுக்கீடு செய்யபடுகின்றது.

5. இன்ஸ்டன்ஸ் கன்ஸ்ட்ரகடர்கள் செயற்படுத்தப்படுகின்றது.

6. படி 5 மற்றும் 6 ஒவ்வொரு ஆப்ஜெடுக்கும் ரீபிட் செய்யப்படுகின்றது.

குறிப்பு:

ஸ்டேட்டிக் கண்ஸ்ட்ரக்டர் இன்ஸ்டன்ஸ் வேரியபிள்களை ஆக்சஸ் செய்ய இயலாது. ஏனெனில் ஆப்ஜெக்டுகள் உருவாகும் முன்பே ஸ்டேட்டிக் கன்ஸ்ட்ரக்டர்கள் உருவாக்கப்படுகின்றது.

ஸ்டேட்டிக் மெத்தட்கள்.

ஸ்டேட்டிக் என்ற கீவேர்டு உடன் அறிவிக்கப்படும் மெத்தட்கள் ஸ்டேட்டிக் மெத்தட் என அழைக்கப்படுகின்றது.

ஸ்டேட்டிக் மெம்பர் மற்றும் ஸ்டேட்டிக் பிராப்பர்ட்டி ஸ்டேட்டிக் ஃபீல்டு ஸ்டேடிக் ஈவண்ட்களை மட்டுமே அணுக முடியும்.

சான்று நிரல்

class File {  

    public string srcPath;  

    public void Copy(string destPath) {...  

    }  

    public static void Copy(string srcPath, string destPath) {...  

    }  

}   

கிளாசிற்கு வெளியே ஸ்டேட்டிக் மெம்பர்கள் கிளாஸ் பெயருடன் ஆக்சஸ் செய்யப்படுகின்றது. இன்ஸ்டன்ஸ் மெம்பர்கள் அந்த கிளாஸிற்க்கு ஆப்ஜெக்ட் உருவாக்கப்பட்டு ஆப்ஜெக்ட் பெயருடன் ஆக்சஸ் செய்யப்படுகின்றது.

இன்ஸ்டன்ஸ் மெம்பர்கள் ஆனது ஸ்டேட்டிக் கன்ஸ்ட்ர்டர்களிலோ அல்லது ஸ்டேட்டிக் மெத்தட்களிலோ ஆக்சஸ் செய்ய இயலாது. ஆனால் அது இன்ஸ்டன்ஸ் குவாலிஃபையர் உடன் சேர்த்து அணுகலாம்.

சான்று நிரல்.

public static void Foo() {  

      //this._Balance = 100; // Is Invalid  

      Accout a = new Account();  

      a._Balance = 100; // IsValid because _Balance is qualified by “a” which is reference to an object.  

ஒரு இன்ஸ்டன்ஸ் மெத்தட் ஸ்டேட்டிக் மெத்தட்களை அனுகலாம்.

this கீவேர்டு ஆனது ஸ்டேட்டிக் மெம்பர்ளுடன் சேர்த்து பயன்படுத்த இயலாது.

ஸ்டேட்டிக் கிளாஸ்.

ஸ்டேட்டிக் கிளாஸ் ஆனது ஸ்டேட்டிக் என்ற கீவேர்டுடன் சேர்த்து குறிப்பிடப்படுகின்றது. இவை ஸ்டேட்டிக் மெம்பர்களை மட்டும் கொண்டிருக்கும். ஸ்டேட்டிக் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்க இயலாது.

இது குளோபள் டேட்டாவை மேனேஜ் செய்யப்பயன்படுகின்றது.

சான்று:

static class Demo {  

    public static int P1;  

    public static void Foo() {}  

}  

ஸ்டேட்டிக் மெம்பர்களுக்கான மொத்த சான்று நிரல் கீழே உள்ளது.

using System;  

namespace Article__Static {  

    static class Program {  

        static string name;  

        private static string _subject;  

        public static string subject {  

            get {  

                return _subject;  

            }  

            set {  

                _subject = value;  

            }  

        }  

        static Program() {  

            Console.WriteLine("static constructor.");  

            name = "static member.”  

        }  

        public static void Display() {  

            Console.WriteLine("static method.” + name);   

            }  

            static void Main(string[] args) {  

                Program.subject = "CSharp";  

                Console.WriteLine(Program.subject);  

                Program.Display();  

            }  

        }  

    }  

வெளியீடு:

 


நன்றி.

முத்து கார்த்திகேயன்,மதுரை.

 

 

 

 

 

 

 

 

ads Udanz

Monday, March 30, 2020

சி ஷார்ப் மெத்தட் ஹைடிங்க்.


முதலில் Employee என்று ஒரு பேஸ் கிளாஸ் உருவாக்குவோம்.
class Employee
    {
        public string FirstName;
        public string LastName;
        public void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + LastName);
        }
    }
இப்பொழுது அதற்கு இரண்டு சைல்ட் கிளாஸ் உருவாக்குவோம்.
class PartTimeEmployee : Employee
    {

    }
    class FullTimeEmployee : Employee
    {
    }
பிறகு FullTimeEmployee கிளாசிற்கு ஆப்ஜெக்ட் உருவாக்குவோம்.பேஸ் கிளாசில் உள்ள மெம்பர்கள் டெரிவ்டு கிளாசிற்கும் கிடைக்கும் என்பதை நாம் அறிவோம். அதன் படி
class Program
    {
        static void Main(string[] args)
        {
            FullTimeEmployee FTE = new FullTimeEmployee();
            FTE.FirstName = "Full Time";
            FTE.LastName = "Employee";
            FTE.PrintFullName();
            PartTimeEmployee PTE = new PartTimeEmployee();
            PTE.FirstName = "Part Time";
            PTE.LastName = "Employee";
            PTE.PrintFullName();
        }
    }
Ctrl+f5 கொடுத்து நிரலை இயக்குவோம்
வெளியீடு:
Full Time Employee
Part Time Employee
Press any key to continue . . .
நமக்கு பார்ட் டைம் எம்ப்ளாயி   PrintFullName மெத்தட் அழைக்கும் பொழுது–contractor  என்பதும் சேர்ந்து வர வேண்டும் என்றால் PartTimeEmployee கிளாசில் ஒரு மெத்தட் உருவாக்குவோம்.
class PartTimeEmployee : Employee
    {
        public void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + LastName+" -contractor");
        }
    }
PrintFullName என்ற மெத்தட் பேஸ் கிளாசிலும் இருக்கின்றது அதே நேரத்தில் டெரிவ்டு கிளாசிலும் இருக்கின்றது.
இப்பொழுது நிரலை இயக்கினால்
Full Time Employee
Part Time Employee -contractor
Press any key to continue . . .
என்ற  வெளியீடு கிடைக்கும்.
இதில் டெரிவ்டு கிளாசில் உள்ள மெத்தட் பேஸ் கிளாசில் உள்ள மெத்தடை ஹைட் செய்கின்றது
 எனினும் PrintFullName() என்பது பச்சை கலரில் அண்டர்லைன் ஆகியிருக்கும். இதை சரியாக்க டெரிவ்டு கிளாசில் உள்ள மெத்தடில் new என்ற கீவேர்டு சேர்த்தால் அது மறையும்.
class PartTimeEmployee : Employee
    {
        public new void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + LastName+" -contractor");
        }
    }
இப்பொழுது டெரிவ்டு கிளாசில் உள்ள மெத்தடை அழைத்தால் பேஸ் கிளாசில் உள்ளதே கிடைக்க வேண்டுமென்றால் 2 வழிகள் இருக்கின்றது முதல் மெத்தட்.
class PartTimeEmployee : Employee
    {
        public new void PrintFullName()
        {
            base.PrintFullName();
            //Console.WriteLine(FirstName + " " + LastName+" -contractor");
        }
    }
Base என்ற கீவேர்டு மூலம் இதை செய்திருக்கின்றோம்.
இரண்டாவது வழி:
டைப் கேஸ்டிங்க்.
டெரிவ்டு கிளாஸ் ஆப்ஜெக்டை பேரன்ட் கிளாஸ் ஆப்ஜெக்டாக டைப் கேஸ்ட் செய்கின்றோம்.
static void Main(string[] args)
        {
            FullTimeEmployee FTE = new FullTimeEmployee();
            FTE.FirstName = "Full Time";
            FTE.LastName = "Employee";
            FTE.PrintFullName();
            PartTimeEmployee PTE = new PartTimeEmployee();
            PTE.FirstName = "Part Time";
            PTE.LastName = "Employee";
            ((Employee)PTE).PrintFullName();

        }
இரண்டு வழியிலும் வெளியீடு கீழ்கண்டவாறு இருக்கும்.
Full Time Employee
Part Time Employee
Press any key to continue . . .
பேரண்ட் கிளாசிற்கு ரெஃபெரஅன்ஸ் உருவாக்கி அதை டெரிவ்டு கிளாஸ் மெம்பருக்கு பாயிண்ட் செய்கின்றோம்.
Employee  PTE = new PartTimeEmployee();
            PTE.FirstName = "Part Time";
            PTE.LastName = "Employee";
            PTE.PrintFullName();
இப்பொழுதும் மேலே உள்ள வெளியீடே கிடைக்கும்.
நன்றி.
முத்து கார்த்திகேயன்,மதுரை.


ads Udanz