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

No comments:

Post a Comment