এই সি # কোডটি দেখছেন:
byte x = 1;
byte y = 2;
byte z = x + y; // ERROR: Cannot implicitly convert type 'int' to 'byte'
byte(বা short) টাইপগুলিতে সম্পাদিত যে কোনও গণিতের ফলাফল স্পষ্টতই একটি পূর্ণসংখ্যার পিছনে ফেলে দেওয়া হয়। সমাধানটি হ'ল সুস্পষ্টভাবে ফলাফলটি আবার বাইটে ফেলে দেওয়া:
byte z = (byte)(x + y); // this works
আমি যা ভাবছি তা কেন? এটি কি স্থাপত্যিক? দার্শনিক?
আমাদের আছে:
int+int=intlong+long=longfloat+float=floatdouble+double=double
তাই কেন না:
byte+byte=byteshort+short=short?
কিছুটা পটভূমি: আমি "স্বল্প সংখ্যায়" (অর্থাত্ <8) গণনার দীর্ঘ তালিকা সম্পাদন করছি এবং মধ্যবর্তী ফলাফলগুলি একটি বৃহত অ্যারেতে সংরক্ষণ করছি। বাইট অ্যারে ব্যবহার করা (কোনও int অ্যারের পরিবর্তে) দ্রুত (ক্যাশে হিটগুলির কারণে ) is তবে কোডের মাধ্যমে ছড়িয়ে থাকা বিস্তৃত বাইট-কাস্টগুলি এটিকে আরও বেশি অপঠনযোগ্য করে তুলেছে।
byte1 | byte2সংখ্যা হিসাবে মোটেও আচরণ করে না। এটি বিটের নিদর্শন হিসাবে তাদের সাথে নিখুঁতভাবে আচরণ করছে। আমি আপনার দৃষ্টিকোণটি বুঝতে পারি, তবে এটি ঠিক তাই ঘটে যায় যে প্রতিবার আমি সি # তে বাইটগুলিতে কোনও পাটিগণিত করেছি, আমি আসলে তাদের সংখ্যা হিসাবে নয়, বিট হিসাবে গণ্য করি এবং এই আচরণটি সর্বদা পথে থাকে।