Tuesday, April 14, 2020

சி ஷார்ப் நேர்முகத் தேர்வு வினாக்கள். பகுதி-2


11. const மற்றும் readonly என்ன வித்தியாசம்?.
 Const
இதன் மதிப்பு கம்பைல் டைமில் அசைன் செய்யப்படுகின்றது. முழு நிரலிலும் இதன் மதிப்பை மாற்றியமைக்க இயலாது
Readonly.
இதன் மதிப்பை மாற்றியமைக்கலாம் ஆனால் நான் ஸ்டேட்டிக் கன்ஸ்ட்ரக்டர்  மூலம் மட்டுமே மாற்றியமைக்க  முடியும்.
class Test {    
    readonly int read = 10;    
    const int cons = 10;    
    public Test() {    
        read = 100;    
        cons = 100;    
    }    
    public void Check() {    
        Console.WriteLine("Read only : {0}", read);    
        Console.WriteLine("const : {0}", cons);    
    }    
}    
மேலே உள்ள நிரல் பிழை சுட்டும். அதாவது cons என்ற கான்ஸ்டண்டின் மதிப்பை மாற்றுகின்றோம் எனவே பிழை காண்பிக்கின்றது.
கீழே உள்ளவாறு கோடிங்கை மாற்றியமைக்கவும்.
class Program {    
    static void Main(string[] args) {    
        Test obj = new Test();    
        obj.Check();    
        Console.ReadLine();    
    }    
}    
class Test {    
    readonly int read = 10;    
    const int cons = 10;    
    public Test() {    
        read = 100;    
    }    
    public void Check() {    
        Console.WriteLine("Read only : {0}", read);    
        Console.WriteLine("const : {0}", cons);    
    }    
}    
வெளியீடு:
Read only: 100
Const:10
12.  ref மற்றும் out என்ன வித்தியாசம்.
Ref ஆனது ஆர்க்கியூமெண்டை ரெஃபெரென்ஸ் ஆக அழைக்கும் மெத்தடிற்கு அனுப்புகின்றது. அதாவது மெத்தடில் ref variable –ல் நாம் செய்யும் மாற்றம் ஒரிஜனல் வேரியபிளிலும் மாறும்/
Out கீவேர்டு ஆனது மெத்தடில் இருந்து நாம் மதிப்பை திருப்பியனுவதற்கு பயன்படுகின்றது.
அதாவது ஒரு மெத்தடில் return கீவேர்டு மூலம் அதிக பட்சமாக ஒரே ஒரு மதிப்பை தான் திருப்பி யனுப்ப முடியும். Out கீவேர்டு மூலம் ஒன்றுக்கு மேற்பட்ட மதிப்பை மெத்தடில் இருந்து திருப்பி அனுப்பலாம்.
13. this கீவேர்டை static மெத்தடில் பயன்படுத்தலாமா?
முடியாது.
ஏனெனில் this என்பது கரண்ட் ஆப்ஜெக்டைக் குறிக்கும்.
Static method ஆனது இன்ஸ்டன்ஸ் கொண்டு அழைக்கப்படுவதில்லை.கிளாஸ் பெயர் கொண்டே அழைக்கப்படுகின்றது. என்வே ஸ்டேட்டிக் மெத்தட் உட்புறம் this கீவேர்டு பயன்படுத்த முடியாது.
14. properties என்பது என்ன?
பொதுவாக ஒரு நிரலில் வேரியபிளை பிரைவேட் ஆகவும்மெத்தடுகளை பப்ளிக் ஆகவும் வைத்திருபோம். வேரியபிளை கிளாசிற்கு வெளியே ஆக்சஸ் செய்ய இயலாது.மெத்தடின் மூலமே ஆக்சஸ் செய்ய இயலும்.
பிராப்பர்ட்டிகள் கொண்டு நேரடியாக அனுகலாம் . இதற்கு get, set என இரண்டு ஆக்சஸர்கள் பயன்படுகின்றது. இது எப்பொழுதும் பப்ளிக் ஆகும்.
15.dispose,  finalize என்ன வித்தியாசம்.
இரண்டுமே பயன்பாட்டில் உள்ள அன்மேனேஜ்டு ரிசோர்ஸ்களை விடுவிக்க பயன்படுகின்றது.

Finalize:
இது ஃபைல்கள், டேட்டா பேஸ் கனக்சன்கள் போன்றவற்றை ரிலீஸ் செய்ய பயன்படுகின்றது.இது இன்டெர்னல் பிராசஸ் ஆகும் . கார்பேஜ் கலக்டரால் இது அழைக்கப்படுகின்றது.
இது System.Object கிளாசை சேர்ந்தது.
Dispose.
இதுவும் ஃபைல்கள், டேட்டாபேஸ் கனக்சன்கள் போன்றவற்றை விடுவிக்க பயன்படுகின்றது. ஆனால் இது மேனுவல் ஆக அழைக்கப்படுகின்றது.இது IDisposable என்ற இன்டர்பேசை சேர்ந்தது. இதை அழைக்க்கும் கிளாஸ் IDisposable என்ற இண்டர்ஃபேசை இம்ப்லிமென்ட் செய்ய வேண்டும்.
16.String, StringBuilder என்ன வித்தியாசம்.
இரண்டுமே ஸ்ட்ரிங்குகளை கையாள பயன்படுகின்றது. ஆனால் வித்தியாசங்கள் உள்ளது.
String.
இது immutable ஆகும் அதாவது ஒரு தடவை மதிப்ப்பிருத்தி விட்டால் அதை மாற்றியமைக்க முடியாது.
StringBuilder
இது System.Text.StringBuilder மூலம் உருவாக்கப்படுகின்றது.இதில் உள்ள மதிப்புகளை மாற்றியமைக்கலாம்.
சான்று நிரல்.
17.delegates என்றால் என்ன?
இது c++-ல் உள்ள ஃபங்க்சன் பாயிண்டர் போல் பயன்படுகின்றது. மெத்தடிற்கு ஒரு டெலிகேட் அதாவது ஒரு பிரதிநிதியை உருவாக்கி அதைப்அழைத்தாலே மெத்தட் அழைக்கப்படும்படி செய்வதே டெலிகேட்டின் பயன் ஆகும்.
டெலிகேட்ஸ் ஆனது System.MultiCastDelegate என்ற கிளாசில் இருந்து டெரிவ் செய்யப்படுகின்றது.
இதற்கு ஒரு சிக்னேச்சரும் ரிடர்ன் டைப்பும் உண்டு. இது நாம் எந்த மெத்தடிற்கு டெலிகேட்டை பயன்படுத்துகின்றோமோ அதனுடன் பொருந்த வேண்டும்.
ஸ்டேட்டிக் மெத்தட், இன்ஸ்டன்ஸ் மெத்தட் இரண்டையும் பாயிண்ட் செய்யலாம்.
ஒரு தடவை டெலிகேட் உருவாக்கி விட்டால் அது பாயிண்ட் செய்யும் மெத்த்டை இயக்க நேரத்தில் அழைக்கலாம்.
18. sealed class என்றால் என்ன?
ஒரு கிளாசை சீல்டு கிளாஸ் என அறிவித்துவிட்டால் அதை இன்ஹெரிட் செய்ய இயலாது.
சி  ஷார்ப்பில்  sealed என்ற மாடிஃபையர் கொண்டும் விபி.நெட்டில் not inheritable என்ற கீவேர்டு கொண்டும் இது அறிவிக்கப்படுகின்றது.
ஒரு கிளாஸ் ஒரு சீல்டு கிளாசை இன்ஹெரிட் செய்தால் கம்பைலர் பிழை சுட்டும்.
19.partial class என்றால் என்ன?
இது ஒரே கிளாசை இரண்டு அல்லது அதற்கும் கூடுதலாய் தனிதனியே எழுத பயன்படுகின்றது.இதற்கு partial என்ற கீவேர்டு பயன்படுகின்றது. கம்பைல் செய்யும் பொழுது ஒரே கிளாஸாய் உருவாக்கப்படுகின்றது.இவை ஒரே நேம்ஸ்பேசில் இருக்க வேண்டும்.

20. Earlybinding, late binding என்ன வித்தியாசம்?
இரண்டுமே பாலிமார்பிசம் என்ற கான்செப்டில் பயன்படுகின்றது.
பாலிமார்பிசம் என்பது  ஆப்ஜெக்ட் ஒரியண்டட் நிரலாக்கத்தின் கருத்து ஆகும். இவை ஒரே ஆப்ஜெக்ட் பல்வேறு வடிவங்கள் எடுப்பது ஆகும்.
அதாவது ஒரே மெத்தட் இரண்டு இன்டிஜெர் அல்லது  இன்டிஜெர்களை கூட்ட பயன்படுத்துவது போல் ஆகும்.
Early binding or compile time binding.
இது ஒரு கிளாசில்  உள்ள ஒன்றுக்கும் மேற்பட்ட மெத்தட்கள் ஒரே பெயரில் அமைந்திருப்பது ஆகும்.ஆனால்  அதன் சிக்னேச்சர் வேறு படும்.
அதாவது பாராமீட்டர்களின் எண்ணிக்கை அல்லது பாராமீட்டர்களின் டேட்டா டைப் ஆகியவை மாறுபடும். எந்த மெத்தட் அழைக்கப்பட வேண்டும் என்பது இதில் கம்பைல் நேரத்திலேயே தீர்மானிக்கப்படுகின்றது . எனவே இது Early binding எனப்படுகின்றது.
Late binding.
இவை ஓரே பெயர் மற்றும் ஒரே சிக்னேச்சர் கொண்ட மெத்தட்கள் பேஸ் கிளாஸ் மற்றும் டெரிவ்டு கிளாஸில் இருக்கும்.இதில் எந்த கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கி அந்த மெத்தடை அழைக்கின்றோமோ அந்த மெத்தட் அழைக்கப்படும். இதில் எந்த மெத்தட் அழைக்கப்பட வேண்டும் என்பது ரன் டைமில் தான் தீர்மானிக்கப்படுகின்றது. என்வே இது late binding என் அழைக்கப்படுகின்றது.
நன்றி.
முத்து கார்த்திகேயன்,மதுரை.









ads Udanz

No comments:

Post a Comment