এটি একটি বাগ যা আপনি 0.0 ব্যবহার করতে পারেন। সংকলক স্পষ্টত সমস্ত ধ্রুবক এক্সপ্রেশনকে শূন্যের মান হিসাবে কেবল 0 হিসাবে আচরণ করে।
এখন, কম্পাইলারের পক্ষে সি # 5 স্পেসিফিকেশনের 6.1.3 ধারা অনুযায়ী আপনার এনামে 0 টির ধ্রুবক অভিব্যক্তি থেকে অন্তর্নিহিত রূপান্তরকে মঞ্জুরি দেওয়ার জন্য এটি সঠিকint :
একটি অন্তর্নিহিত গণনা রূপান্তরটি দশমিক-পূর্ণসংখ্যা-আক্ষরিক 0 কে যে কোনও এনাম-টাইপ এবং এমন কোনও nlalaable-type এর রূপান্তর করতে অনুমতি দেয় যার অন্তর্নিহিত প্রকারটি enum-type হয়। পরবর্তী ক্ষেত্রে রূপান্তরটি অন্তর্নিহিত এনাম-টাইপে রূপান্তর করে ফলাফল মোড়ানো (.14.1.10) দ্বারা মূল্যায়ন করা হয়।
আমি এর আগে সি # টিমের সাথে কথা বলেছি: তারা 0.0 (এবং প্রকৃতপক্ষে 0.0m এবং 0.0f) থেকে এনাম মানগুলিতে দুর্ঘটনাজনিত রূপান্তর সরিয়ে ফেলতে পছন্দ করবে , তবে দুর্ভাগ্যক্রমে আমি সংগ্রহ করেছি এটি খুব বেশি কোড ভেঙেছে - যদিও এটি প্রথম স্থানে অনুমতি দেওয়া উচিত ছিল না।
মনো mcsসংকলক এই সমস্ত ভাসমান পয়েন্ট রূপান্তরগুলি নিষিদ্ধ করে, যদিও এটি এর অনুমতি দেয়:
const int Zero = 0;
...
SomeEnum x = Zero;
Zeroএটি একটি ধ্রুবক অভিব্যক্তি হলেও দশমিক-পূর্ণসংখ্যা-আক্ষরিক নয় despite
ভবিষ্যতে সি # স্পেসিফিকেশন পরিবর্তনটি দেখে 0 টির মান (অর্থাত নকল করা mcs) সহ কোনও পূর্ণসংখ্যার ধ্রুবক অভিব্যক্তিটি দেখে অবাক হবেন না , তবে আমি ভাসমান পয়েন্ট রূপান্তরগুলি সরকারীভাবে সঠিক হওয়ার আশা করবো না । (সি # এর ভবিষ্যত ভবিষ্যদ্বাণী করার আগে আমি ভুল হয়ে গিয়েছিলাম অবশ্যই ...)
1.0।