C# Data Types
Introduction to C# Data Types
जैसा की आपको पता है किसी भी program में data को store करने के लिए variables create किये जाते है। जब आप कोई variable create करते है तो साथ ही ये भी define करते है की उस variable में किस type (सँख्या, दशमलव सँख्या, अक्षर, शब्द आदि) का data store किया जाएगा।
C# एक strongly typed language है। C# में सभी variables, constants, functions, parameters और expressions आदि का data type होता है।
किसी भी variable में store किये जाने वाले data का type define करने के लिए C# में बहुत से data types available है। इन data types से compiler को variable में stored data के बारे में जानकारी मिलती है।
Compiler को data types के द्वारा निचे दी जा रही जानकारी प्राप्त होती है।
- उस data type के लिए कितने storage space की जरुरत होगी।
- किस तरह के operations उस data type के साथ allow है।
- Minimum और maximum value जो वह data type store कर सकता है।
- उस data type का base type क्या है जिससे वह inherit हुआ है।
- वह location जँहा variable के लिए memory allocate की जायेगी।
- वह data type किस किस members के साथ use किया जा सकता है।
Data types की जानकारी से compiler यह सुनिश्चित करता है की जितने भी operations आप अपने program में perform करेंगे वो type safe होंगे। उदाहरण के लिए आप एक variable create करते है जो number store करता है। Compiler सुनिश्चित करता है की इस variable के साथ सिर्फ arithmetic operations ही perform किये जाये।
इसी प्रकार आप कोई variable create करते है जो character store करता है तो compiler उस variable के साथ arithmetic operations allow नहीं करता है। यदि आप ऐसा करने का प्रयास करते है तो compiler error generate करता है।
जब program run किया जाता है तो compiler यह जानकारी executable file में meta data के रूप में जोड़ देता है। बाद में CLR (Common Language Runtime) द्वारा यह metadata runtime में type safety सुनिश्चित करने के लिए use किया जाता है।
C# Common Type System
C# में सभी data types की एक hierarchy है जिसे CTS (Common Type System) कहा जाता है। इस hierarchy में सबसे top पर System.Object type है। इसका मतलब यह है की Object type के variable को किसी भी दूसरे data type का variable assign किया जा सकता है।
यह hierarchy inheritance को follow करती है। इस hierarchy में एक type दूसरे type से inherit होता है जो base type कहलाता है। Inherit करने वाला type base type के सभी methods, properties और दूसरे members को भी inherit करता है।
इस hierarchy में represent किये गए सभी data types objects है। यानी की जब आप कोई variable create करते है तो वह एक object होता है।
असल में C# में जितने भी data types है वे सब structs है। इसलिए जब भी आप कोई variable create करते है तो really में आप एक object create करते है।
Common Type System में represent किया गया कोई भी data type या तो value data type होता है या एक reference data type होता है।
C# Value Data Types
C# में सभी value types Object.valueType struct से derived है। यह struct System.Object struct से derived है जो की CTS hierarchy में सबसे top पर है।
Value data types के variables में values directly stored होती है। इसका मलतब ये है की value data types के variables में value store करने के लिए आपको किसी भी प्रकार का object create करने की आवश्यकता नहीं होती है।
Value data types को 2 categories में divide किया गया है। जिनके बारे में निचे बताया जा रहा है।
Built-in (or Predefined) Value Data Types
Built-in value data types ऐसे data types है जो C# library में पहले से available है। इस तरह के data types को आपको create करने की आवश्यकता नहीं होती है। C# में निचे दिए जा रहे built-in value data types available है।
- sbyte - इस data type variables में values की range -128 से लेकर 127 तक होती है। इस data type के variables की memory में size 8 bit होती है।
- byte - इस data type के variables में values की range 0 से लेकर 255 तक होती है। इस data type के variables की memory में size 8 bit होती है।
- char - यह data type एक character (a, x, y, z, c, d, m, o आदि) को store करता है। इस data type के variables में values की range U+0000 से लेकर U+ffff तक होती है। इस data type के variables की memory में size 16 bit होती है।
- short - इस data type के variables में values की range -32,768 से लेकर 32767 तक होती है। इस data के variables की memory size 16 bit होती है।
- ushort - इस data type के variables में values की range 0 से लेकर 65535 तक होती है। इस data type के variables की memory में size 16 bit होती है।
- int - इस data type के variables में values की range -2,147,483,648 से लेकर 2,147,483647 तक होती है। इस data type के variables की memory में size 32 bit होती है।
- uint - इस data type के variables में values की range 0 से लेकर 4,294,967,295 तक होती है। इस data type के variables की memory में size 32 bit होती है।
- long - इस data type के variables में values की range -9,233,372,036,854,775,808 से लेकर 9,233,372,036,854,775,808 तक होती है। इस data type के variables की memory में size 64 bit होती है।
- ulong - इस data type के variables में values की range 0 से लेकर 18,446,744,073,709,551,615 तक होती है। इस data type के variables की memory में size 64 bit होती है।
- float - इस data type से दशमलव सँख्या store करने के लिए variable create किया जाता है। इस data type के variables में आप +-1.5e-45 से लेकर +-3.4e38 तक की range में value store की जा सकती है। इस data type के variables में दशमलव के बाद की 7 सँख्या (precision) तक को store किया जाता है।
- double - इस data type से भी दशमलव सँख्या store करने के लिए variable create किया जाता है। लेकिन इस data type की range और precision float type से ज्यादा होती है। इस type के variables में आप +-5.0e-324 से लेकर +-1.7e308 तक की values create की जा सकती है।
Custom (or User Defined) Value Data Types
Custom value data types ऐसे data types है जिन्हें programmer अपनी आवश्यकतानुसार स्वयं define करता है। C# में निचे दिए जा रहे custom value data types available है।
- struct - यह एक compound type होता है जो built in value data types से मिलकर बना होता है। इसके बारे में अधिक जानकारी आप सम्बंधित tutorial पढ़कर प्राप्त कर सकते है।
- enum - यह एक ऐसा data type है जिसके द्वारा आप named constants का set create कर सकते है। इसके बारे में अधिक जानकारी के लिए आप सम्बंधित tutorial पढ़ सकते है।
C# Reference Data Types
Reference data types का behaviour value data types से अलग होता है। जब आप कोई reference data type का variable create करते है तो उसमें directly value नहीं होती है। जब तक की आप new operator द्वारा उसका instance नहीं create करते है तब तक उस variable में null value होती है।
जब object create होता है तो उसके अनुसार heap में memory allocate होती है। Create किया गया variable केवल उस memory का reference hold करता है।
C# में reference data types को 2 categories में divide किया गया है। इनके बारे में निचे दिया जा रहा है।
Built-in (or Predefined) Reference Data Types
C# में निचे दिए जा रहे predefined reference data types available है।
- String - इस data type द्वारा आप ऐसा variable create करते है जो characters की sequence (string) store करने में सक्षम होता है। इस reference data type के बारे में अधिक जानकारी आप सम्बन्धित tutorial से प्राप्त कर सकते है।
- Object - इस data type द्वारा आप ऐसा object create करते है जिसको किसी भी प्रकार का object assign किया जा सकता है।
Custom (or User Defined) Reference Data Types
C# में निचे दिए जा रहे user defined reference data types available है।
- Class - इस reference data type द्वारा आप एक compound type create करते है। इस data type के बारे में अधिक जानकारी आप सम्बंधित tutorial से प्राप्त कर सकते है।
- Interface - इस data type के बारे में अधिक जानकारी आप सम्बन्धित tutorial से प्राप्त कर सकते है।
- Delegate - इस data type के बारे में अधिक जानकारी आप सम्बन्धित tutorial से प्राप्त कर सकते है।
C# Generic Types
आप एक ऐसा भी type create कर सकते है जिसमें दूसरे types parameter के रूप में pass किये जा सकते है और वह type pass किये गए type का ही बन जाता है। Generic types generic programming के लिए बहुत उपयोगी होते है। इनके बारे में अधिक जानकारी आप सम्बंधित tutorial से प्राप्त कर सकते है।
C# Implicit Types
यदि आपको पता नहीं है की किसी variable में किस type की value store की जायेगी तो आप var keyword द्वारा उसे implicit type define कर सकते है। ऐसा करने पर जब value store की जाती है तो compiler उस value के type के अनुसार उस variable का type भी implicitly (automatically) set कर देता है।
C# Anonymous Types
Anonymous types द्वारा आप किसी object के अंदर बिना पहले type define किये read only properties define कर सकते है।
C# Nullable Types
जब आप normal variables create करते है तो उनमें null value नहीं store की जा सकती है। लेकिन C# में आप primitive data types के बाद ? mark लगाकर ऐसे variables create कर सकते है जिनमें null value store की जा सकती है।
उदाहरण के लिए आप int? age variable define करके इसमें null value store कर सकते है। Nullable types उन situations में helpful होते है जब आप databases के साथ interact कर रहे हो।