वीबी.नेट - कुछ भी नहीं बना कुछ भी नहीं है

क्या कोई यहां वीबीएनईटी का उपयोग करता है और IsNothing का उपयोग करने के लिए या उसके विपरीत Isothing का विरोध करने के लिए मजबूत प्राथमिकता नहीं है (उदाहरण के लिए, यदि IsNothing (anObject) </कोड> या <�कोड> यदि anObject कुछ भी नहीं है ... )? यदि हां, तो क्यों?

संपादित करें: यदि आपको लगता है कि वे दोनों समान रूप से स्वीकार्य हैं, तो क्या आपको लगता है कि एक को चुनना और इसके साथ रहना सबसे अच्छा है, या क्या उन्हें मिश्रण करना ठीक है?

0
ro fr bn
बहुत अच्छे कारणों से बहुत कुछ हैं IsNothing() का उपयोग करने से बचें
जोड़ा लेखक KyleMit, स्रोत
@ जेसे चिश्ल्म, एक टिप्पणी के लिए बहुत कुछ है, लेकिन मेरी पिछली टिप्पणी ने इस लिंक को एक लेख में पोस्ट किया है जो 5 अलग-अलग लोगों को दर्शाता है blog.reneorban.com/2011/12/vbnet-isnothing-vs-is-nothing.htm‌ l
जोड़ा लेखक KyleMit, स्रोत
तकनीकी उत्तर वास्तव में दिलचस्प हैं, लेकिन शर्म की बात है कि सवाल थोड़ा सा खुला छोड़ दिया गया था और बिना किसी उपयोग के कुछ जवाब उत्पन्न किए, बस तेजी से अस्पष्ट व्यक्तिगत वरीयता
जोड़ा लेखक underscore_d, स्रोत

9 उत्तर

वीबी ऐसी चीजों से भरा है जो इसे "अंग्रेजी की तरह" बनाने और उन लोगों के लिए आरामदायक बनाने की कोशिश कर रहा है जो भाषाओं() और {} का उपयोग करते हैं। उदाहरण के लिए, "अंग्रेजी की तरह" पक्ष पर ... वीबी में " नहीं है " कीवर्ड ... और नहीं, मैं मजाक नहीं कर रहा हूं। और दूसरी तरफ, जैसा कि आप पहले से ही जानते हैं कि आप अधिकतर समय() फ़ंक्शन कॉल के साथ उपयोग कर सकते हैं, यदि आप चाहते हैं, लेकिन ऐसा नहीं करना है।

मैं IsNothing() पसंद करता हूं ... लेकिन मैं सी और सी # का उपयोग करता हूं, इसलिए यह बस आरामदायक है। और मुझे लगता है कि यह और अधिक पठनीय है। लेकिन जो कुछ भी आपको ज्यादा आरामदायक लगता है उसके साथ जाओ।

0
जोड़ा
आपका लिंक मर चुका है, इसलिए इसके लायक होने के लिए यह एक लाइव है: web.archive.org/web/20050308014055/http://ea.3leaf.com/2004/‌ 08 / & hellip; ध्यान देने योग्य मूल्य हालांकि लोकप्रिय धारणा के विपरीत यह सच नहीं है।
जोड़ा लेखक Matt Wilko, स्रोत

यदि आप एमएसआईएल को निष्पादित करते समय देखते हैं तो आप देखेंगे कि यह सटीक कोड पर संकलित नहीं है। जब आप IsNothing() का उपयोग करते हैं तो यह वास्तव में अभिव्यक्ति का मूल्यांकन करने के विरोध में उस विधि को कॉल करता है।

"इज़ नथिंग" का उपयोग करने की ओर झुकने का कारण यह है कि जब मैं अस्वीकार कर रहा हूं, तो यह "नहीं है कुछ नहीं (ऑब्जेक्ट)" के बजाय "IsNot कुछ भी नहीं" बन जाता है जिसे मैं व्यक्तिगत रूप से महसूस करता हूं और अधिक पठनीय दिखता है।

0
जोड़ा

मैं एसक्यूएल में जितना भी करता हूं उतना उपयोग करने से आंशिक रूप से कुछ भी संस्करण का उपयोग नहीं करता हूं।

0
जोड़ा

मैं "कुछ भी नहीं" से सहमत हूं। जैसा कि ऊपर बताया गया है, "IsNot कुछ भी नहीं" के साथ अस्वीकार करना आसान है।

मुझे यह पढ़ने में आसान लगता है ...

If printDialog IsNot Nothing Then
    'blah
End If

उसके बाद यह...

If Not obj Is Nothing Then
    'blah
End If
0
जोड़ा

मैं "कुछ भी नहीं" विकल्प की तरफ झुका रहा हूं, मुख्य रूप से क्योंकि यह अधिक ओओ लगता है।

Surely Visual Basic ain't got the Ain't keyword.

0
जोड़ा
क्या VB.NET विस्तार विधियां कर सकता है? :)
जोड़ा लेखक klkitchens, स्रोत

You should absolutely avoid using IsNothing()

Here are 4 reasons from the article IsNothing() VS Is Nothing

  1. Most importantly, IsNothing(object) has everything passed to it as an object, even value types! Since value types cannot be Nothing, it?s a completely wasted check.
    Take the following example:

    Dim i As Integer
    If IsNothing(i) Then
       ' Do something 
    End If
    

    This will compile and run fine, whereas this:

    Dim i As Integer
    If i Is Nothing Then
        '   Do something 
    End If
    

    Will not compile, instead the compiler will raise the error:

    'Is' operator does not accept operands of type 'Integer'.
    Operands must be reference or nullable types.

  2. IsNothing(object) is actually part of part of the Microsoft.VisualBasic.dll.
    This is undesirable as you have an unneeded dependency on the VisualBasic library.

  3. Its slow - 33.76% slower in fact (over 1000000000 iterations)!

  4. Perhaps personal preference, but IsNothing() reads like a Yoda Condition. When you look at a variable you're checking it's state, with it as the subject of your investigation.

    i.e. does it do x? --- NOT Is xing a property of it?

    So I think If a IsNot Nothing reads better than If Not IsNothing(a)

0
जोड़ा

मैंने शुरुआत में IsNothing का उपयोग नहीं किया लेकिन मैं नई परियोजनाओं में मुख्य रूप से पठनीयता के लिए कुछ भी नहीं उपयोग कर रहा हूं। INothing के साथ चिपकने का एकमात्र समय यह है कि यदि मैं कोड बनाए रखता हूं जहां इसका उपयोग पूरे होता है और मैं लगातार रहना चाहता हूं।

0
जोड़ा

I find that Patrick Steele answered this question best on his blog: Avoiding IsNothing()

मैंने पैट्रिक स्टील को अपने पद के लिए क्रेडिट सुनिश्चित करने के लिए यहां उनके किसी भी उत्तर की प्रतिलिपि नहीं बनाई है। लेकिन मुझे लगता है कि अगर आप यह तय करने की कोशिश कर रहे हैं कि क्या कुछ भी नहीं है या कुछ भी नहीं है तो आपको अपनी पोस्ट पढ़नी चाहिए। मुझे लगता है कि आप सहमत होंगे कि कुछ भी सबसे अच्छा विकल्प नहीं है।

0
जोड़ा
आंशिक आलेख सामग्री: अधिक कोड की समीक्षा करने के बाद मुझे एक अन्य कारण पता चला कि आपको इससे बचना चाहिए: यह मूल्य प्रकार स्वीकार करता है! जाहिर है, चूंकि IsNothing() एक ऐसा फ़ंक्शन है जो 'ऑब्जेक्ट' स्वीकार करता है, आप जो कुछ भी चाहते हैं उसे पास कर सकते हैं। यदि यह एक मान प्रकार है, तो .NET इसे किसी ऑब्जेक्ट में बॉक्स करेगा और इसे IsNothing पर पास करेगा - जो हमेशा बॉक्स किए गए मान पर झूठी वापसी करेगा! वीबी.नेट कंपाइलर "कुछ भी नहीं" शैली वाक्यविन्यास की जांच करेगा और यदि आप मूल्य प्रकार पर "कुछ भी नहीं" करने का प्रयास करते हैं तो संकलित नहीं करेंगे। लेकिन IsNothing() फ़ंक्शन बिना किसी शिकायत के
जोड़ा लेखक VoteCoffee, स्रोत
कुछ सामग्री पोस्ट की गईं क्योंकि आप कभी नहीं जानते कि लिंक मर जाएगा या नहीं, मैंने सोचा कि यह कवरेशन के लिए एक अच्छा बिंदु जोड़ा गया है।
जोड़ा लेखक VoteCoffee, स्रोत

क्या कुछ भी ऐसी वस्तु की आवश्यकता नहीं है जिसे मूल्य को कुछ भी सौंपा गया हो। IsNothing() कोई वैरिएबल नहीं ले सकता है जिसे संख्यात्मक प्रकार सहित प्रारंभ नहीं किया गया है। यह उदाहरण के लिए उपयोगी है जब एक वैकल्पिक पैरामीटर पारित किया गया है।

0
जोड़ा
ये गलत है। क्या आप वाकई इसे गलत तरीके से नहीं मिला है? " कुछ भी नहीं है संदर्भ प्रकारों पर काम करने का इरादा है। एक मान प्रकार कुछ भी नहीं का मान नहीं रख सकता है और यदि आप कुछ नहीं [... असाइन करते हैं तो इसके डिफ़ॉल्ट मान पर वापस आ जाता है। ] कुछ भी नहीं है हमेशा गलत लौटाता है। " लेकिन कुछ नहीं "
जोड़ा लेखक underscore_d, स्रोत