के बीच अजीब अंतर मैं एक कोड.NET 3.5 और .net 4.0
byte[] bytes = new byte[] { 0x80, 1, 192, 33, 0 };
if (bytes[0] != 0x80 || ((bytes[1] & ~1) != 0) || bytes[4] != 0)
{
//signature wrong (.net 4.0 result)
}
else
{
//signture okay (.net 3.5 result)
}
.net 3.5 अभिव्यक्ति में मूल्यांकन करता मिल गया है के रूप में झूठी है, लेकिन 4.0 में यह रूप में सही मूल्यांकन करता है। मेरा सवाल है क्यों? और इस व्यवहार को रोकने के लिए मैं अपने पुराने (.net 3.5) कोड को कैसे देख सकता हूं?
क्या आप इस स्थिति को विभाजित कर सकते हैं ताकि अंतर पैदा हो सके? – Diego
सबसे अजीब चीज - तो मैं वॉच विंडो (.NET 3.5 और 4.0 के लिए दोनों) में इस अभिव्यक्ति को उजागर करता हूं। मुझे मिला है: बाइट्स [0]! = 0x80 \t झूठा \t बूल (बाइट्स [1] & ~ 1)! = 0) \t झूठी \t बूल बाइट्स [4]! = 0 \t झूठी \t बूल (बाइट्स [0]! = 0x80 || ((बाइट्स [1] और ~ 1)! = 0) | | बाइट्स [4]! = 0) \t झूठी \t बूल – qmor
कौन सा सही है? –