2008-09-19 25 views
10

क्या किसी को यह देखने की प्राथमिकता है कि कोई मान DBNull है या नहीं? मैंने पाया है कि ये दो बयान मुझे परिणाम चाहते हैं, लेकिन सिर्फ सोच रहा है कि कोई वरीयता है या नहीं?(कोई भी == System.DBNull.Value) बनाम (कोई भी सिस्टम है। डीबीएनयूएल)

if (any is System.DBNull)

एक ही रूप में:

if (any == System.DBNull.Value)

धन्यवाद!

+0

+1 अच्छा प्रश्न। गलत विवरण के लिए – nawfal

उत्तर

4
if (any == System.DBNull.Value) ... 

मैं इसे पसंद करता हूं, क्योंकि मैं इसे मानों की तुलना के रूप में पढ़ता हूं, प्रकार नहीं।

0

यदि आप सी # में हैं, तो आपको == का उपयोग करना चाहिए; is प्रतिबिंब का उपयोग करता है जो गणना करने के लिए अधिक महंगा है, खासकर जब System.DBNull का केवल एक उदाहरण है।

+0

-1 'प्रतिबिंब का उपयोग करता है'। 'Is' का उपयोग कर कोई प्रदर्शन समस्या नहीं है। (अधिक सटीक होने के लिए, आमतौर पर "प्रतिबिंब का उपयोग" के रूप में जाना जाता है, सिस्टम में बदलावों का उपयोग करना है। रिफ्लेक्शन। जो वास्तव में धीमा है। इसलिए हाथ से चलने के लिए 'is' के उपयोग को" प्रतिबिंब का उपयोग "के रूप में संदर्भित करना है सबसे भ्रामक भ्रामक तरीके से। तो यह भ्रामक है कि इस उत्तरदाता का मानना ​​है कि परिणाम धीमा होना चाहिए। क्या आपने वास्तव में ** इस धारणा का परीक्षण किया था? नहीं) – ToolmakerSteve

-1

मुझे "System.DBNull" अधिक पसंद है क्योंकि मुझे कुछ नल की तुलना करने और यह सच होने के विचार से नफरत है। कई अन्य वाक्यविन्यास (इसका क्या बहुवचन है?) कुछ भी होगा == पूर्ण वापसी न्यूल।

मैं समझता हूं कि डीबीएनयूएल है। कारण के लिए वैल्यू। मुझे पता है। मैं मेरी प्राथमिकता :)

+0

हू? यह एक नेट सवाल है। 'x == null'' null' वापस नहीं करता है। एक Google खोज करना, मुझे कोई अन्य भाषा नहीं मिली है जिसमें यह करता है। शायद आप फ्लोट ऑपरेशंस के बारे में सोच रहे हैं जहां 'x == अपरिभाषित 'रिटर्न' अपरिभाषित 'है। लेकिन यह 'शून्य' से अलग है। 'शून्य 'का एक विशिष्ट अर्थ है, और इसकी तुलना वास्तव में की जा सकती है। इस तरह की तुलना का अर्थ क्या है, और क्या यह एक अच्छा विचार है या नहीं, इसके बारे में अधिक जानकारी के लिए, http://stackoverflow.com/questions/3507383/equalsitem-null-or-item-null देखें (और सी ++ में, जिसमें से अधिक सी # एस वाक्यविन्यास आता है, यह अक्सर 'शून्य' की तुलना करने के लिए आवश्यक है।) – ToolmakerSteve

+0

हाय @ टूलमेकरस्टेव! लड़का यह एक पुराना सवाल है कि आप आगे बढ़ रहे हैं।यह डेटा से संबंधित है, और एसक्यूएल में तुलना (somevar = null) शून्य वापस आती है। – nathaniel

11

लिस्टिंग कर रहा हूँ मैं उपयोग करने के लिए

if (DBNull.Value.Equals(value)) { 
    // 
} 

या

if (Convert.IsDBNull(value)) { 
    // 
} 
5

is प्रतिबिंब का उपयोग नहीं करता के रूप में Kevlar623 कहते हैं। यह आईएल में isinst ऑपरेशन के लिए मानचित्र है। उस स्तर पर, प्रदर्शन की तुलना करना मूर्खतापूर्ण मूर्खतापूर्ण है, जब तक आप मिसाइल मार्गदर्शन प्रणाली पर काम नहीं कर रहे हों।

मैं value is DBNull का उपयोग करता हूं। यह सिर्फ सही और एक परावर्तक डेवलपर के रूप में लगता है, मैं भरोसा नहीं कर सकता कि अस्तित्व में केवल एक ही मूल्य DBNull.Value है। कीड़े होती है।

+0

मैं अन्य बग्स के बारे में अधिक चिंता करता हूं कि क्या 'वैल्यू' के एकमात्र मूल्य के साथ एक सीलबंद सिस्टम क्लास किसी दूसरे मूल्य को अंकुरित करने जा रही है। हालांकि मैं आपसे सहमत हूं, क्योंकि मैं पागल नहीं हूं, लेकिन क्योंकि डीबीएनयूएल के खिलाफ परीक्षण। मेरे दिमाग में वैल्यू इस संभावना से पता चलता है कि ** ** कुछ अन्य डीबीएनयूएल हो सकता है। मुझे पता है * वहां नहीं है, लेकिन ऐसा कोड क्यों लिखता है जो ऐसा लगता है कि एक विशिष्ट डीबीएनयूएल का जिक्र है, जब वास्तव में केवल एक ही होता है? हमेशा मुझे मूर्खतापूर्ण लग रहा था। – ToolmakerSteve

-2

यह फ़ॉर्म का अनुसरण करने का एक अच्छा उदाहरण है। जो भी अधिक कुशलतापूर्वक निष्पादित करता है वह रास्ता है। ऐसा लगता है, जैसे पढ़ता है, या बुरे नामों को यह कहते हैं कि आप अप्रासंगिक हैं। भाषा का कुशलतापूर्वक उपयोग करें, भाषा को नए में मोल्ड न करें।

+0

-1 - यह कोई जवाब नहीं है। यदि आपने ** के रूप में कोई सबूत शामिल किया था जो ** ** तेज था, तो यह एक जवाब होगा। – ToolmakerSteve

संबंधित मुद्दे