जवाबों:
Parse
एक अपवाद फेंकता है तो यह, मूल्य पार्स नहीं कर सकता जबकि TryParse
रिटर्न एक bool
संकेत है कि क्या यह सफल रहा।
TryParse
सिर्फ try
/ catch
आंतरिक रूप से नहीं है - इसका पूरा मतलब यह है कि इसे अपवाद के बिना लागू किया जाता है ताकि यह तेज हो। वास्तव में यह जिस तरह से लागू होने की संभावना है, वह यह है कि आंतरिक रूप से Parse
विधि कॉल करेगी TryParse
और यदि वह वापस आती है तो एक अपवाद को फेंक देगीfalse
।
संक्षेप में, उपयोग करें Parse
यदि आप सुनिश्चित हैं कि मूल्य मान्य होगा; अन्यथा उपयोग करें TryParse
।
यदि स्ट्रिंग को पूर्णांक में परिवर्तित नहीं किया जा सकता है, तो
int.Parse()
एक अपवाद फेंक देंगेint.TryParse()
गलत वापस आएगा (लेकिन अपवाद नहीं फेंकें)TryParse पद्धति आपको यह जांचने की अनुमति देती है कि क्या कुछ पार्स करने योग्य है। यदि आप पार्स को अवैध इंट के साथ पहले उदाहरण के रूप में आज़माते हैं, तो आपको ट्रिपपर्स में एक अपवाद मिलेगा, यह एक बूलियन देता है जिससे आपको पता चलता है कि पार्स सफल हुआ या नहीं।
एक फुटनोट के रूप में, सबसे TryParse तरीकों से अशक्त होने के लिए एक अपवाद फेंक दिया जाएगा।
यदि एक स्ट्रिंग से निर्दिष्ट डेटाटाइप में रूपांतरण विफल हो जाता है, तो पार्स एक अपवाद फेंकता है, जबकि TryParse स्पष्ट रूप से अपवाद को फेंकने से बचता है।
TryParse मान नहीं लौटाता है, यह इंगित करने के लिए कि क्या पार्स सफल हुआ (और अपवाद नहीं फेंकता) एक स्थिति कोड देता है।
रिकॉर्ड के लिए, मैं दो कोड का परीक्षण कर रहा हूं: यह केवल एक स्ट्रिंग से एक संख्या में बदलने की कोशिश करता है और यदि यह विफल हो जाता है तो संख्या को शून्य पर असाइन करें।
if (!Int32.TryParse(txt,out tmpint)) {
tmpint = 0;
}
तथा:
try {
tmpint = Convert.ToInt32(txt);
} catch (Exception) {
tmpint = 0;
}
C # के लिए, सबसे अच्छा विकल्प tryparse का उपयोग करना है क्योंकि try & Catch वैकल्पिक ने अपवाद को फेंक दिया
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
यह दर्दनाक धीमा और अवांछनीय है, हालांकि, कोड तब तक बंद नहीं होता है जब तक कि डिबग का अपवाद इसके साथ रुकने के लिए तय नहीं हो जाता है।
मैं इसकी एक बहुत पुरानी पोस्ट जानता हूं, लेकिन Parse vs TryParse पर कुछ और विवरण साझा करने के बारे में सोचा।
मेरे पास एक ऐसा परिदृश्य था जहाँ DateTime को स्ट्रिंग में परिवर्तित करने की आवश्यकता है और यदि datevalue null या string.empty है तो हम एक अपवाद का सामना कर रहे थे। इसे दूर करने के लिए, हमने Parse को TryParse से बदल दिया है और इसे डिफ़ॉल्ट तारीख मिलेगी।
पुराना कोड:
dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy");
dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy");
नया कोड:
DateTime startDate = default(DateTime);
DateTime endDate=default(DateTime);
DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate);
DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate);
एक और वेरिएबल घोषित करना है और आउट फॉर ट्रायपार्स के रूप में उपयोग किया जाता है।
startDate
और endDate
जैसा DateTime.TryParse
कि हमेशा उनके साथ लिखना होगा DateTime.MinValue
। यदि गलत दिनांक अभ्यावेदन को भिन्न मान में परिवर्तित किया जाना चाहिए, तो वापसी मूल्य की जाँच करें DateTime.TryParse
और यदि यह गलत है, तो मूल्य को स्पष्ट रूप से निर्धारित करें।
DateTime?
( दिनांक समय से
double.Parse ( "-"); एक अपवाद उठाती है, जबकि double.TryParse ("-", आउट पार्स); पार्स करने के लिए 0 तो मुझे लगता है कि TryParse अधिक जटिल रूपांतरण करता है।
TryParse
वापसीtrue
या false
? यह कैसे पता चलेगा कि यह "वैध" है।