मैं है निम्नलिखित सी # कोड:सी # सांख्यिक स्थिरांक
byte rule = 0;
...
rule = rule | 0x80;
जो त्रुटि पैदा करता है:
Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)
[अद्यतन: सवाल का पहला संस्करण था गलत ... मैं संकलक उत्पादन पढ़ने में भूलना
:]डाली जोड़ना समस्या नहीं तय करता है
rule |= 0x80;
सिर्फ अजीब लगता है कौन सा:
मैं के रूप में यह लिखने के लिए की जरूरत है। |=
ऑपरेटर |
ऑपरेटर से अलग क्यों है?
क्या बाईटर के रूप में निरंतर इलाज करने के लिए कंपाइलर को बताने का कोई अन्य तरीका है?
@ जियोवानी Galbo: हां और ना। कोड बाहरी डिवाइस में फ्लैश मेमोरी के प्रोग्रामिंग से निपट रहा है, और तार्किक रूप से स्मृति के एक बाइट का प्रतिनिधित्व करता है। मैं इसे बाद में डाल सकता था, लेकिन यह और अधिक स्पष्ट लग रहा था। मुझे लगता है कि मेरी सी विरासत बहुत ज्यादा दिखा रही है!
@ जोनाथन हॉलैंड: '' के रूप में वाक्य रचना neater लग रहा लेकिन दुर्भाग्य से काम करने के लिए प्रकट नहीं होता है ... यह पैदा करता है:
The as operator must be used with a reference type or nullable type ('byte' is a non-nullable value type)
जैसा कि आप कहते हैं, सभी चींटियां int32 हैं, क्या भाषा (या सीएलआर) विनिर्देश इस गारंटी को नहीं बनाता है? – Eloff
int int32 के लिए एक सी # उपनाम है और निश्चित रूप से बाइट के समान नहीं है। जेआईटी कंपाइलर प्लेटफार्म जागरूक है इसलिए हमें होने की आवश्यकता नहीं है। विभिन्न देशी प्राइमेटिव्स के खिलाफ मूल शब्द आकार, संबोधित करने और संचालन की दक्षता अंतर्निहित प्रणाली में प्रबंधित डेटा ("प्राइमेटिव्स" सहित) को आवंटित करने में अधिक संभावना है।गौर करें कि उसी कोड को .NET माइक्रो के साथ ही .NET CF (फोन के लिए एआरएम लक्ष्यीकरण और एक्सबॉक्स 360 के लिए पावरपीसी) के लिए संकलित किया जा सकता है। ये सिस्टम विभिन्न संख्याओं के साथ अपनी संख्या भी व्यक्त कर सकते हैं जिनके बाइनरी परिचालन पर बड़े प्रभाव पड़ते हैं। – TheXenocide