में बूलियन से बाइट को परिवर्तित करना .NET में पर boolean
कास्टिंग क्यों करता है, निम्नलिखित आउटपुट देता है?वीबीएनईटी
कोड SNIPPIT:
Dim x As Boolean = 1
Dim y As Byte = x 'Implicit conversion here from Boolean to Byte
System.Diagnostics.Debug.Print(_
"x = " & x.ToString _
& " y = " & y.ToString _
& " (bool)(1) = " & CType(1, Boolean).ToString _
& " (byte)((bool)1) = " & CType((CType(1, Boolean)), Byte).ToString)
आउटपुट:
एक्स = सच
y = 255
(bool) (1) = true
(बाइट) ((bool) 1) = 255
True
(डब्ल्यू जिसे आमतौर पर 1 के पूर्णांक प्रतिनिधित्व के रूप में जाना जाता है) byte
पर डाला जाने पर 255 में परिवर्तित हो जाता है?
मुझे यह उत्सुक लगता है कि वीबी.नेट आपको एक बूलियन को बाइट में भी डालने देता है। सी # में यह एक अवैध कलाकार है। – vcsjones
यदि आप वीबीएनईटी में 'डायरेक्टकास्ट() 'करते हैं तो यह स्वचालित रूप से आपको बताएगा कि यह एक अवैध कलाकार है, लेकिन यदि आप' सीटीपी() '(जो मैंने दिखाया है) का उपयोग करते हैं, तो यह उपरोक्त के रूप में करेगा। मुझे यह जानने में दिलचस्पी है कि 'ट्रू' जिसे आम तौर पर '1' के नाम से जाना जाता है, हुड के तहत' 255' तक अनुवाद करता है। यहां पर अजीब कास्टिंग बहुत सारे चल रहे हैं। – afuzzyllama
मुझे लगता है कि यह सिर्फ कंपाइलर का व्यवहार है। यह आईएल 'ldc.i4 एफएफ 00 00 00' उत्सर्जित करता है, हालांकि मैं कल्पना में कुछ भी नहीं देख सकता जो कहता है। बहुत ही सरल मामलों के लिए संकलक सिर्फ कास्ट को अनुकूलित कर रहा है। – vcsjones