c# - क्या मुझे int या Int32 का उपयोग करना चाहिए




variable-types (20)

Int16 पर भी विचार करें। यदि आपको अपने आवेदन में स्मृति में एक इंटीजर स्टोर करने की आवश्यकता है और आप उपयोग की गई स्मृति की मात्रा के बारे में चिंतित हैं, तो आप Int16 के साथ जा सकते हैं क्योंकि यह कम स्मृति का उपयोग करता है और इसमें int32 से छोटी न्यूनतम / अधिकतम सीमा होती है (जो कि int है ।)

सी # में, int और Int32 एक ही चीज़ हैं, लेकिन मैंने कई बार पढ़ा है कि Int32 पर int को किसी भी कारण के साथ पसंद नहीं किया जाता है। क्या कोई कारण है, और मुझे परवाह करना चाहिए?


int System.Int32 के लिए सी # भाषा का शॉर्टकट है

जबकि इसका मतलब यह है कि माइक्रोसॉफ्ट इस मैपिंग को बदल सकता है, फोगक्रिक की चर्चाओं पर एक पोस्ट [source]

"64 बिट मुद्दे पर - माइक्रोसॉफ्ट वास्तव में .NET Framework के 64-बिट संस्करण पर काम कर रहा है लेकिन मुझे पूरा यकीन है कि int उस सिस्टम पर 64 बिट पर मैप नहीं करेगा।

कारण:

1. सी # ईसीएमए मानक विशेष रूप से कहता है कि int 32 बिट और लंबा 64 बिट है।

2. माइक्रोसॉफ्ट ने फ्रेमवर्क संस्करण 1.1 में अतिरिक्त गुणों और विधियों की शुरुआत की जो कि int मूल्यों के बजाय लंबे मूल्यों को लौटाते हैं, जैसे Array.GetLongLength Array.GetLength के अतिरिक्त।

तो मुझे लगता है कि यह कहना सुरक्षित है कि सभी अंतर्निर्मित सी # प्रकार उनके वर्तमान मानचित्रण को बनाए रखेंगे। "


int एक सी # कीवर्ड है और यह स्पष्ट है।

अधिकांश समय इससे कोई फर्क नहीं पड़ता, लेकिन इंट 32 के खिलाफ जाने वाली दो चीजें:

  • आपको "सिस्टम का उपयोग करके" होना चाहिए; बयान। "int" का उपयोग करने के लिए कोई कथन का उपयोग करने की आवश्यकता नहीं है।
  • Int32 नामक अपनी खुद की कक्षा को परिभाषित करना संभव है (जो मूर्ख और भ्रमित होगा)। int हमेशा int का मतलब है।

आपको अधिकांश प्रोग्रामिंग भाषाओं में परवाह नहीं करना चाहिए, जब तक कि आपको एक विशिष्ट आर्किटेक्चर के लिए अनुकूलित विशिष्ट गणितीय फ़ंक्शंस या कोड लिखने की आवश्यकता न हो ... बस सुनिश्चित करें कि प्रकार का आकार आपके लिए पर्याप्त है (यदि आप किसी इंटेल से बड़ा कुछ उपयोग करते हैं पता है कि उदाहरण के लिए आपको 32-बिट से अधिक की आवश्यकता होगी)


आपको परवाह नहीं करनी चाहिए यदि आकार एक चिंता है तो मैं बाइट, लघु, int, तब लंबा उपयोग करूंगा। Int32 से अधिक int का उपयोग करने का एकमात्र कारण यह है कि यदि आपको 2147483647 से अधिक या 2147483648 से कम की आवश्यकता है।

इसके अलावा मुझे परवाह नहीं है, इसके साथ चिंतित होने के लिए कई अन्य वस्तुएं हैं।


इंट या इंट 32 का उपयोग वही है पाठक के लिए कोड को सरल बनाने के लिए केवल चीनी है।

Nullable संस्करण int का उपयोग करें? या Int32? जब आप शून्य वाले फ़ील्ड पर डेटाबेस के साथ काम करते हैं। यह आपको कई रनटाइम मुद्दों से बचाएगा।


एक स्थिर विधि को एक्सेस करते समय मैं हमेशा अलियाड प्रकार (int, स्ट्रिंग, इत्यादि) का उपयोग करता हूं और एक स्थिर विधि का उपयोग करते समय वास्तविक नाम का उपयोग करता हूं:

int x, y;
...
String.Format ("{0}x{1}", x, y);

यह int.TryParse () जैसी कुछ देखने के लिए बदसूरत लगता है। शैली के अलावा यह अन्य कोई कारण नहीं है।


कुछ कंप्यूटर्स के विभिन्न प्लेटफॉर्म पर int के लिए अलग-अलग आकार होते हैं (सी # विशिष्ट नहीं)

कुछ कोडिंग मानकों (एमआईएसआरए सी) के लिए आवश्यक है कि इस्तेमाल किए गए सभी प्रकार आकार निर्दिष्ट हैं (यानी Int32 और int नहीं)।

विभिन्न प्रकार के चर के लिए उपसर्ग निर्दिष्ट करना भी अच्छा है (उदाहरण के लिए बी बिट 8 बिट बाइट, 16 बिट शब्द के लिए डब्ल्यू, और एल 32 बिट लंबे शब्द => Int32 lMyVariable)

आपको परवाह करना चाहिए क्योंकि यह आपके कोड को अधिक पोर्टेबल और अधिक रखरखाव बनाता है।

पोर्टेबल सी # पर लागू नहीं हो सकता है यदि आप हमेशा सी # का उपयोग करने जा रहे हैं और सी # विनिर्देश इस संबंध में कभी नहीं बदलेगा।

रखरखाव ihmo हमेशा लागू होगा, क्योंकि आपके कोड को बनाए रखने वाले व्यक्ति को इस विशेष सी # विनिर्देश के बारे में पता नहीं हो सकता है, और एक बग याद आती है int intalyaly 2147483647 से अधिक हो जाती है।

एक साधारण फॉर-लूप में जो उदाहरण के लिए महीनों के महीनों की गणना करता है, आपको परवाह नहीं है, लेकिन जब आप उस संदर्भ में चर का उपयोग करते हैं जहां यह संभवतः ओवरफ्लो हो सकता है, तो आपको परवाह करना चाहिए।

यदि आप उस पर बिट-वार ऑपरेशंस करने जा रहे हैं तो आपको भी परवाह करना चाहिए।


कोई फर्क नहीं पड़ता कि। int भाषा कीवर्ड और Int32 इसकी वास्तविक प्रणाली प्रकार है।

यहां मेरे उत्तर को संबंधित प्रश्न पर भी देखें।


जैसा कि पहले से ही कहा गया है, int = Int32 । सुरक्षित होने के लिए, डेटा प्रकार सीमाओं की परवाह करने वाली किसी भी चीज़ को लागू करते समय int.MinValue / int.MaxValue का हमेशा उपयोग करना सुनिश्चित करें। मान लीजिए .NET ने फैसला किया कि int अब Int64 , आपका कोड सीमाओं पर कम निर्भर होगा।


प्रकारों के लिए बाइट आकार बहुत दिलचस्प नहीं है जब आपको केवल एक ही भाषा से निपटना होगा (और कोड के लिए जो आपको गणित अतिप्रवाह के बारे में याद दिलाना नहीं है)। वह हिस्सा जो दिलचस्प हो जाता है वह तब होता है जब आप एक भाषा से दूसरे में, सी # कॉम ऑब्जेक्ट इत्यादि के बीच पुल करते हैं, या आप कुछ बिट-स्थानांतरण या मास्किंग कर रहे हैं और आपको स्वयं को याद दिलाना होगा (और आपके कोड-समीक्षा सह-वोकर्स) डेटा के आकार का।

व्यावहारिक रूप से, मैं आमतौर पर खुद को याद दिलाने के लिए Int32 का उपयोग करता हूं कि वे किस आकार में हैं क्योंकि मैं प्रबंधित सी ++ (उदाहरण के लिए सी # तक पुल करने के लिए) के साथ-साथ अप्रबंधित / देशी सी ++ लिखता हूं।

जब तक आप शायद जानते हों, सी # में 64-बिट्स हैं, लेकिन मूल सी ++ में, यह 32-बिट्स के रूप में समाप्त होता है, या चार यूनिकोड / 16-बिट्स होता है जबकि सी ++ में यह 8-बिट होता है। लेकिन हम यह कैसे जानते हैं? जवाब यह है, क्योंकि हमने इसे मैन्युअल में देखा है और ऐसा कहा है।

समय और अनुभवों के साथ, जब आप सी # और अन्य भाषाओं के बीच पुल करने के लिए लिखने के कोड लिखते हैं तो आप अधिक प्रकार के ईमानदार होने लगेंगे (यहां कुछ पाठक सोच रहे हैं कि "आप क्यों?"), लेकिन आईएमएचओ मेरा मानना ​​है कि यह एक बेहतर अभ्यास है क्योंकि मुझे याद नहीं है कि मैंने पिछले हफ्ते क्या कोड किया है (या मुझे अपने एपीआई दस्तावेज़ में निर्दिष्ट नहीं करना है कि "यह पैरामीटर 32-बिट पूर्णांक है")।

F# (हालांकि मैंने इसका कभी भी उपयोग नहीं किया है), वे int , int32 , और मूलभूत परिभाषित करते हैं। वही सवाल उठाना चाहिए, "मैं किसका उपयोग करूं?"। जैसा कि अन्य ने उल्लेख किया है, ज्यादातर मामलों में, इससे कोई फर्क नहीं पड़ता (पारदर्शी होना चाहिए)। लेकिन मैं एक के लिए अस्पष्टताओं को दूर करने के लिए int32 और uint32 चुनना होगा।

मुझे लगता है कि यह केवल उन अनुप्रयोगों पर निर्भर करेगा जो आप कोडिंग कर रहे हैं, जो इसका उपयोग कर रहे हैं, इंट 32 का उपयोग करने के लिए उचित ठहराने के लिए आप और आपकी टीम का क्या कोडिंग अभ्यास करते हैं।


मुझे पता है कि सबसे अच्छा अभ्यास int का उपयोग करना है, और सभी एमएसडीएन कोड int का उपयोग करता है। हालांकि, जहां तक ​​मुझे पता है मानकीकरण और स्थिरता से परे कोई कारण नहीं है।


मैं इस घटना में int का उपयोग करता हूं कि माइक्रोसॉफ्ट कुछ नए फंक्ड संस्करण के पूर्णांक के लिए डिफ़ॉल्ट कार्यान्वयन को बदलता है (चलिए इसे Int32b कहते हैं)।

माइक्रोसॉफ्ट int intb को int32b में बदल सकता है, और मुझे अपने नए कोड (और उम्मीदपूर्वक सुधार) पूर्णांक कार्यान्वयन का लाभ उठाने के लिए मेरे किसी भी कोड को बदलने की ज़रूरत नहीं है।

यह किसी भी प्रकार के कीवर्ड के लिए जाता है।


मैं माइक्रोसॉफ्ट के StyleCop का उपयोग करने की सिफारिश करता हूं।

यह FxCop की तरह है, लेकिन शैली से संबंधित मुद्दों के लिए। डिफ़ॉल्ट कॉन्फ़िगरेशन माइक्रोसॉफ्ट के आंतरिक स्टाइल गाइड से मेल खाता है, लेकिन इसे आपके प्रोजेक्ट के लिए अनुकूलित किया जा सकता है।

इसका उपयोग करने में थोड़ा सा समय लग सकता है, लेकिन यह निश्चित रूप से आपके कोड को बेहतर बनाता है।

उल्लंघन के लिए स्वचालित रूप से जांचने के लिए आप इसे अपनी निर्माण प्रक्रिया में शामिल कर सकते हैं।


यह अभ्यास में कोई फर्क नहीं पड़ता है और समय में आप अपना खुद का सम्मेलन अपनाएंगे। मैं एक प्रकार निर्दिष्ट करते समय कीवर्ड का उपयोग करता हूं, और स्थिर विधियों का उपयोग करते समय कक्षा संस्करण और इस प्रकार:

int कुल = Int32.Parse ("100 9");


विजुअल स्टूडियो 2012 इंट 32 में तत्काल विंडो के अनुसार int है, Int64 लंबा है। आउटपुट यहां है:

sizeof(int)
4
sizeof(Int32)
4
sizeof(Int64)
8
Int32
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648
Int64
long
    base {System.ValueType}: System.ValueType
    MaxValue: 9223372036854775807
    MinValue: -9223372036854775808
int
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648

हालांकि वे (ज्यादातर) समान हैं (एक [बग] अंतर के लिए नीचे देखें), आपको निश्चित रूप से ध्यान रखना चाहिए और आपको Int32 का उपयोग करना चाहिए।

  • 16-बिट पूर्णांक का नाम Int16 है। एक 64 बिट पूर्णांक के लिए यह Int64 है, और 32-बिट पूर्णांक के लिए अंतर्ज्ञानी विकल्प है: int या Int32?

  • Int16, Int32, या Int64 प्रकार के चर के आकार का सवाल आत्म-संदर्भ है, लेकिन प्रकार int के चर के आकार का सवाल एक बिल्कुल मान्य प्रश्न और प्रश्न है, चाहे कितना तुच्छ हो, विचलित हो भ्रम, अपशिष्ट समय, चर्चा में बाधा, इत्यादि। (तथ्य यह सवाल मौजूद है कि इस बिंदु को साबित करता है)।

  • Int32 का उपयोग करने से बढ़ावा मिलता है कि डेवलपर अपनी पसंद के प्रकार के बारे में जागरूक है। एक इंट फिर से कितना बड़ा है? ओह हाँ, 32. इस प्रकार का आकार वास्तव में माना जाएगा जब आकार नाम में शामिल किया गया है। Int32 का उपयोग करने से अन्य विकल्पों के ज्ञान को भी बढ़ावा मिलता है। जब लोगों को कम से कम पहचानने के लिए मजबूर नहीं किया जाता है तो विकल्प होते हैं कि इंटेल के लिए "पूर्णांक प्रकार" बनना बहुत आसान हो जाता है।

  • 32-बिट पूर्णांक के साथ बातचीत करने के उद्देश्य से ढांचे के भीतर वर्ग को Int32 नाम दिया गया है। एक बार फिर, जो है: अधिक सहज, कम भ्रमित, एक (अनावश्यक) अनुवाद (सिस्टम में अनुवाद नहीं, बल्कि डेवलपर के दिमाग में) की int lMax = Int32.MaxValue , आदि int lMax = Int32.MaxValue या Int32 lMax = Int32.MaxValue ?

  • int सभी .NET भाषाओं में कोई कीवर्ड नहीं है।

  • यद्यपि तर्क हैं कि क्यों कभी भी बदलाव नहीं होने की संभावना है, int हमेशा int32 नहीं हो सकता है।

टाइप करने के लिए दो अतिरिक्त वर्ण हैं और [बग]।

यह संकलित नहीं होगा

public enum MyEnum : Int32
{
    AEnum = 0
}

लेकिन यह होगा:

public enum MyEnum : int
{
    AEnum = 0
}

ECMA-334 : 2006 सी # भाषा विशिष्टता (पी 18):

प्रत्येक पूर्वनिर्धारित प्रकार सिस्टम-प्रदत्त प्रकार के लिए लघुरूप है। उदाहरण के लिए, कीवर्ड int संरचना System.Int32 को संदर्भित करता है। शैली के मामले में, कीवर्ड का उपयोग पूर्ण सिस्टम प्रकार के नाम के उपयोग पर अनुकूल है।



int और Int32 बीच कोई अंतर नहीं है, लेकिन int एक भाषा कीवर्ड है क्योंकि कई लोग इसे स्टाइलिस्टिक रूप से पसंद करते हैं (जैसे string बनाम String )।





variable-types