vb.net - Set Nullable property default value to Nothing not working as desired -


मेरे पास एक संपत्ति है जो कि Nullable का पूर्णांक एक डिफ़ॉल्ट है मान कुछ भी नहीं जैसा नीचे दिखाया गया है:

  पूर्णांक के रूप में संपत्ति परीक्षण आईडी? = कुछ भी नहीं   

निम्नलिखित कोड गुणांक का मूल्यांकन करता है, कुछ करने के लिए TestId (वांछित)

  रेडट्रीनोड के रूप में मंद परीक्षा = rtvDefinitionCreate.FindNodeByValue (DefinitionHeaderEnum.Test) यदि परीक्षण कुछ भी नहीं तो परिभाषा है। टेस्टआईडी = कुछ और परिभाषा नहीं। TestId = test.Nodes (0)। मूल्य समाप्ति यदि   

लेकिन नीचे दिए गए कोड का मूल्यांकन 0 ( पूर्णांक के लिए डिफ़ॉल्ट मान , जब भी पूर्णांक है डिफ़ॉल्ट मान कुछ भी नहीं )

  मंद परीक्षण के रूप में RadTreeNode = rtvDefinitionCreate.FindNodeByValue (DefinitionHeaderEnum। टेस्ट) definition.TestId = यदि (कोई भी परीक्षण नहीं), कुछ नहीं, test.Nodes (0)। मूल्य)   

उपरोक्त कोड में क्या गलत है? कोई भी सहायता ??

(बाद में कोड में संपत्ति कॉल करते समय, संपत्ति में 0 है)

यह 'क्योंकि आप विकल्प सख्त बंद के साथ कोड संकलित कर रहे हैं।

यदि आप अपना कोड विकल्प सख्त ऑन से संकलित करेंगे, कम्पाइलर आपको एक त्रुटि देगा, आपको यह बताएगा कि यह स्ट्रिंग से पूर्णांक? , रनटाइम पर इस तरह के अराजकता से बच नहीं सकता।


< पी <>> वीबी नेट पर गुण / टर्नरी ऑपरेटर / विकल्प सख्त बंद का उपयोग करते समय यह एक विचित्रता है।

निम्न कोड:

  कक्षा परीक्षा संपदा पूर्णांक के रूप में योग्यताएं? = पूर्णांक के रूप में कुछ भी सार्वजनिक नल योग्य नहीं है? = नॉट एंड एंड क्लास सब-मेन () 'प्रॉपर्टी को सेट करना सीधे न हो तो टर्नरी ऑपरेटर का मूल्यांकन शून्य बी = न्यू टेस्ट () के साथ होगा। {.NullableProperty = if (True, Nothing, "123")} b.NullableProperty = सच है, कुछ भी नहीं, "123") 'प्रतिबिंब के साथ संपत्ति की स्थापना या एक स्थानीय चर सेट' या एक सार्वजनिक क्षेत्र टर्नेरी ऑपरेटर को कुछ अंधा स्थानीय करने के लिए मूल्यांकन देता है? = यदि (सच है, कुछ भी नहीं, "123") मंद अंतर्भूत = यदि (यह सच है, कुछ भी नहीं, "123") b.NullableField = यदि (यह सच है, कुछ नहीं, "123") बी। GetType ()। GetMethod ("set_NullableProperty") ("सही" कुछ नहीं, "123"), (यदि यह सही है, कुछ नहीं, "123")}) बी। गेट टाइप ()। GetProperty ("नल योग्य प्रॉपर्टी")। कुछ भी नहीं) अंत उप   

विचार करने के लिए एक और अंतर:

  Dim localized पूर्णांक के रूप में? = यदि (सच है, कुछ भी नहीं, "123")   

कुछ भी पर मूल्यांकन नहीं करेगा

  Dim localized पूर्णांक के रूप में? = यदि (SomeNonConstantCondition, Nothing, "123")   

का मूल्यांकन 0


करने के लिए आप एक एक्सटेंशन विधि बना सकते हैं आपके लिए बुरा कार्य करें।

  & lt; एक्सटेंशन () & gt; फ़ंक्शन लेआएस (टी, आर के) (ओजज एटी टी, चयनकर्ता फोंक (टी, आर) के रूप में) आर के रूप में यदि ओबजी कुछ भी नहीं है तो फिर से कुछ भी नहीं लौटाएं यदि चयनकर्ता (obj) समापन फ़ंक्शन   < P> और इसे जैसे कॉल करें  
  definition.TestId = test.TakeAs (Int32 के?) (फ़ंक्शन (ओ) o.Nodes (0)। मूल्य)    

Comments

Popular posts from this blog

java - NullPointerException for a 2d Array -

python - Assemble mpeg file unable to play in mediaplayer -

c# - NameSpace Manager or XsltContent to parse aspx page -