स्ट्रिंग का उपयोग करना बेहतर क्यों है। सी # में लक्षण और इसलिए अन्य भाषाओं में सार्वजनिक स्थिरता यह है कि स्थिरांक स्थिर हैं, इसलिए केवल स्मृति में एक उदाहरण लेते हैं।
हर बार जब आप कुछ इस तरह करते हैं: -
stringVariable = "";
आप एक अशक्त स्ट्रिंग का एक नया उदाहरण बना रहे हैं तथा stringVariable साथ यह की ओर इशारा करते।
इसलिए हर बार जब आप एक चर (पॉइंटर) को असाइनमेंट करते हैं, तो "" नल स्ट्रिंग एक नया स्ट्रिंग उदाहरण है जब तक कि इसमें अब कोई पॉइंटर असाइनमेंट न हो।
सभी को एक ही स्थिर पर इंगित करके तारों को प्रारंभ करना, इसका मतलब है कि केवल एक "" बनाया गया है और प्रत्येक प्रारंभिक चर बिंदु एक ही शून्य स्ट्रिंग पर है।
यह मामूली लग सकता है, लेकिन स्ट्रिंग्स बनाना और नष्ट करना पॉइंटर्स (चर) बनाने और उन्हें मौजूदा स्ट्रिंग पर इंगित करने से अधिक संसाधन गहन है।
const String EMPTY_STRING = "";
String variable1 = EMPTY_STRING;
String variable2 = EMPTY_STRING;
String variable3 = EMPTY_STRING;
String variable4 = EMPTY_STRING;
String variable5 = EMPTY_STRING;
आप 5 स्ट्रिंग संकेत पैदा की है बजाय लेकिन केवल 1 स्ट्रिंग
: - -:
String variable1 = "";
String variable2 = "";
String variable3 = "";
String variable4 = "";
String variable5 = "";
स्ट्रिंग प्रारंभ आम है, यह अच्छा करने के लिए अभ्यास है आपने 5 स्ट्रिंग पॉइंटर्स और 5 अलग नल स्ट्रिंग बनाए हैं।
इस मामले में कोई बड़ी समस्या नहीं है, लेकिन दर्जनों कक्षाओं में कोड की हजारों लाइनों में, यह अनावश्यक मेमोरी अपशिष्ट और प्रोसेसर उपयोग है, जो एक और शून्य स्ट्रिंग चर बनाते हैं, जब वे सभी एक ही को इंगित कर सकते हैं आवेदन अधिक कुशल।
बेशक, कई स्थिर तारों को निर्धारित करने और डुप्लिकेट का पुन: उपयोग करने के लिए संकलक पर्याप्त चालाक होना चाहिए, लेकिन क्यों मानते हैं?
इसके अलावा, यह भी कम के रूप में "त्रुटियों को शुरू करने की संभावना है" और "" दोनों संकलन है, फिर भी आप अंतरिक्ष आप गलती से जोड़ा जो नकली रन टाइम त्रुटियों उत्पादन कर सकता है के लिए इस तरह के रूप उदाहरण सशर्त तर्क, छूट सकते हैं: -
myvariable = " ";
While (myVariable == ""){
...
}
जबकि ब्लॉक के अंदर कोड पहुंच योग्य नहीं है क्योंकि मेरा वैरिएबल पहले पुनरावृत्ति पर शर्त को पूरा नहीं करेगा। के साथ "" के बदले "आरंभ की त्रुटि" याद करने के लिए आसान है, जबकि: -
myvariable = EMPTY_STRING;
While (myVariable == EMPTY_STRING){
...
}
..., कम करने के लिए क्रम त्रुटियां होने की संभावना है, खासकर के रूप में गलत वर्तनी EMPTY_STRING बजाय करने के लिए होने का एक संकलन त्रुटि उत्पन्न होगा रन टाइम पर त्रुटि पकड़ो।
सबसे साफ समाधान, एक स्थिर वर्ग बनाना होगा जिसमें आपको आवश्यक सभी प्रकार के स्ट्रिंग स्थिरांक के सदस्य शामिल हों, क्या आपको केवल खाली स्ट्रिंग से अधिक की आवश्यकता होनी चाहिए।
public static class StringConstants{
public static String Empty = "";
public static String EMail = "mailto:%s";
public static String http = "http://%s";
public static String https = "https://%s";
public static String LogEntry = "TimeStamp:%tYmdHMSL | LogLevel:%s| Type:%s | Message: '%s'";
}
String myVariable = StringConstants.Empty;
आप अपनी भाषा के आधार पर मूल स्ट्रिंग ऑब्जेक्ट का विस्तार करने में भी सक्षम हो सकते हैं।
आप किस भाषा का उपयोग कर रहे हैं? –
जावा (टैग देखें) –
एक गाय ऑकर? एक ओर्क गायों कैसे करता है? =) –