अशक्त प्रकार अच्छे हैं, लेकिन केवल उन प्रकारों के लिए जो शुरू करने योग्य नहीं हैं।
किसी प्रकार को "अशक्त" बनाने के लिए उस प्रकार के लिए एक प्रश्नवाचक चिह्न लगाएं, उदाहरण के लिए:
int? value = 5;
मैं "as
. का उपयोग करने की भी अनुशंसा करता हूं " कास्टिंग के बजाय कीवर्ड। आप केवल "as" कीवर्ड का उपयोग अशक्त प्रकारों पर कर सकते हैं, इसलिए सुनिश्चित करें कि आप उन चीजों को कास्टिंग कर रहे हैं जो पहले से ही अशक्त हैं (जैसे तार) या आप ऊपर बताए अनुसार अशक्त प्रकारों का उपयोग करते हैं। इसका तर्क है पी>
- यदि कोई प्रकार अशक्त है, तो "
as
" कीवर्ड रिटर्नnull
यदि कोई मानDBNull
है । - यह कास्टिंग की तुलना में कभी-कभी-थोड़ा तेज है, हालांकि केवल कुछ मामलों में। यह अपने आप में
as
. का उपयोग करने के लिए पर्याप्त कारण नहीं है , लेकिन उपरोक्त कारणों के साथ यह उपयोगी है।
मैं कुछ ऐसा करने की सलाह दूंगा
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
उपरोक्त मामले में, यदि row
DBNull
. के रूप में वापस आता है , फिर value
null
हो जाएगा अपवाद फेंकने के बजाय। सावधान रहें कि यदि आपकी DB क्वेरी लौटाए जा रहे स्तंभों/प्रकारों को बदल देती है, तो as
. का उपयोग करके आपके कोड को चुपचाप विफल कर देगा और मानों को सरल बनाएं null
गलत डेटा लौटाए जाने पर उपयुक्त अपवाद को फेंकने के बजाय, यह अनुशंसा की जाती है कि आपके कोडबेस विकसित होने के साथ-साथ डेटा अखंडता सुनिश्चित करने के लिए अन्य तरीकों से अपने प्रश्नों को सत्यापित करने के लिए आपके पास परीक्षण हों।