सी # में जब मैं कहता हूँ:क्यों सी # 0 int के रूप में व्यवहार करता है और छोटा/दशमलव आदि के रूप में नहीं?
var s = 0;
क्या s
के प्रकार किया जाना चाहिए? यह int32
बनाता है। तो var
short
और अन्य (?) जैसे प्रकारों के लिए प्रयोग योग्य नहीं है।
सी # में जब मैं कहता हूँ:क्यों सी # 0 int के रूप में व्यवहार करता है और छोटा/दशमलव आदि के रूप में नहीं?
var s = 0;
क्या s
के प्रकार किया जाना चाहिए? यह int32
बनाता है। तो var
short
और अन्य (?) जैसे प्रकारों के लिए प्रयोग योग्य नहीं है।
विनिर्देश से (§ 2.4.4.2):
शाब्दिक कोई प्रत्यय है, यह इन प्रकार जिसमें अपने मूल्य दर्शाया जा सकता है की पहली है:
int
,uint
,long
,ulong
।
तो छोटे प्रकार स्वचालित रूप से अनुमानित नहीं होते हैं। तुम एक डाली इस तरह के एक छोटे प्रकार के लिए मजबूर करने जोड़ सकते हैं:
var s = (short)0;
सी # संकलक प्रकार infers Int32
किया जाना है। और आप इसे short
या byte
पर स्पष्ट रूप से नहीं डाल सकते हैं क्योंकि वे आकार में छोटे हैं और आप डेटा खो सकते हैं।
आप decimal
अनुमान लगाने के लिए संकलक चाहते हैं, तो आप कर सकते हैं:
var s = 0M;
सी # भाषा मानक के अनुसार, विशेष रूप से §2.4.4.2 on integer literals:
एक पूर्णांक शाब्दिक के प्रकार के रूप में निम्न प्रकार निर्धारित किया जाता है :
- यदि शाब्दिक में कोई प्रत्यय नहीं है, तो इसमें इन प्रकारों में से पहला है जिसमें इसका मूल्य पुनर्निर्मित किया जा सकता है टेड:
int
,uint
,long
,ulong
।- यदि शाब्दिक
U
याu
द्वारा प्रत्ययित है, तो इसमें इन प्रकारों में से पहला है जिसमें इसका मूल्य प्रदर्शित किया जा सकता है:uint
,ulong
।- यदि शाब्दिक
L
याl
द्वारा प्रत्ययित है, तो इसमें इन प्रकारों में से पहला है जिसमें इसका मान प्रदर्शित किया जा सकता है:long
,ulong
।- शाब्दिक द्वारा प्रत्यय है, तो
UL
,Ul
,uL
,ul
,LU
,Lu
,lU
, याlu
, यह प्रकारulong
की है।
पहला नियम सभी को यहां लागू करने की आवश्यकता है। शाब्दिक 0
में कोई प्रत्यय नहीं है और इसे int
(या, बीसीएल शर्तों, Int32
में) के रूप में प्रदर्शित किया जा सकता है, इसलिए यह उस प्रकार का है।
जैसा कि आप ऊपर से अनुमान लगा सकते हैं, एक शाब्दिक प्रकार के प्रकार को बदलने के लिए, आप इसके लिए एक प्रत्यय जोड़ सकते हैं। उदाहरण के लिए, शाब्दिक 0u
uint
प्रकार का होगा।वैकल्पिक रूप से, आप स्पष्ट रूप से शाब्दिक रूप से एक अलग प्रकार के लिए कास्ट कर सकते हैं; उदाहरण के लिए: (short)0
संकलक को शाब्दिक रूप से short
के रूप में व्यवहार करने का कारण बनता है।
इस पोस्ट को here पर StackOverflow पर देखें।
आप सभी संख्याओं के लिए एक पोस्टफिक्स निर्दिष्ट कर सकते हैं।
var i = 0;
var d = 0d;
var f = 0f;
var l = 0L;
var m = 0m;
एड्रियन, यह एक बिंदु है जो कल्पना में काफी अच्छी तरह से समझाया गया है। – Joey
लगता है कि शॉर्ट के लिए कोई शाब्दिक नहीं है :( – Dhananjay