যখন সংখ্যা, তারিখ এবং সময়গুলিকে স্ট্রিংয়ে ফর্ম্যাট করা হয় বা স্ট্রিং থেকে পার্স করা হয় এটি কীভাবে হয় তা নির্ধারণের জন্য সংস্কৃতি ব্যবহৃত হয়। যেমন প্রভাবশালী en-US
সংস্কৃতিতে আপনার এই স্ট্রিং প্রতিনিধিত্ব রয়েছে:
- 1,000,000.00 - দুই অঙ্কের ভগ্নাংশ সহ এক মিলিয়ন
- 1/29/2013 - এই পোস্টের তারিখ
আমার সংস্কৃতিতে ( da-DK
) মানগুলির এই স্ট্রিং প্রতিনিধিত্ব থাকে:
- 1.000.000,00 - দুই অঙ্কের ভগ্নাংশ সহ এক মিলিয়ন
- 29-01-2013 - এই পোস্টের তারিখ
উইন্ডোজ অপারেটিং সিস্টেমে ব্যবহারকারীর নাম্বার এবং তারিখ / সময়গুলি কীভাবে বিন্যাস করা যায় তা কাস্টমাইজ করতে পারে এবং তার অপারেটিং সিস্টেমের সংস্কৃতির চেয়ে অন্য সংস্কৃতিও বেছে নিতে পারে। ব্যবহৃত বিন্যাসটি ব্যবহারকারীর পছন্দ যা এটি হওয়া উচিত।
সুতরাং যখন আপনি একটি মান ফরম্যাট উদাহরণস্বরূপ ব্যবহার ব্যবহারকারীকে প্রদর্শিত করা ToString
বা String.Format
বা ব্যবহার করে একটি স্ট্রিং থেকে পার্স DateTime.Parse
বা Decimal.Parse
ডিফল্ট ব্যবহার করা CultureInfo.CurrentCulture
। এটি ব্যবহারকারীকে বিন্যাস নিয়ন্ত্রণ করতে দেয়।
যাইহোক, প্রচুর স্ট্রিং ফর্ম্যাটিং এবং পার্সিং আসলে অ্যাপ্লিকেশন এবং ব্যবহারকারীর মধ্যে নয় বরং অ্যাপ্লিকেশন এবং কিছু ডেটা ফর্ম্যাট (যেমন একটি এক্সএমএল বা সিএসভি ফাইল) এর মধ্যে বিনিময় হয়। CultureInfo.CurrentCulture
সেক্ষেত্রে আপনি ব্যবহার করতে চান না কারণ যদি বিভিন্ন সংস্কৃতির সাথে ফর্ম্যাট এবং পার্সিং করা হয় তবে এটি ভেঙে যেতে পারে। CultureInfo.InvariantCulture
সেক্ষেত্রে আপনি ব্যবহার করতে চান (যা en-US
সংস্কৃতির উপর ভিত্তি করে )। এটি নিশ্চিত করে যে মানগুলি সমস্যা ছাড়াই রাউন্ডট্রিপ করতে পারে।
রিশার্পার আপনাকে সতর্কবার্তা দেওয়ার কারণটি হ'ল কিছু অ্যাপ্লিকেশন লেখক এই পার্থক্য সম্পর্কে অবগত নয় যা অনিচ্ছাকৃত ফলাফলের দিকে নিয়ে যেতে পারে তবে তারা এটিকে কখনই আবিষ্কার করতে পারে না কারণ তাদের CultureInfo.CurrentCulture
সাথে en-US
একই আচরণ রয়েছে CultureInfo.InvariantCulture
। তবে অ্যাপ্লিকেশনটি অন্য সংস্কৃতিতে ব্যবহার করা মাত্রই যেখানে একটি সংস্কৃতি বিন্যাসকরণের জন্য এবং অন্যটি অ্যাপ্লিকেশনকে বিশ্লেষণের জন্য ব্যবহার করার সুযোগ রয়েছে তা ভেঙে যেতে পারে।
সুতরাং এটি সংক্ষেপে:
CultureInfo.CurrentCulture
আপনি যদি কোনও ব্যবহারকারীর স্ট্রিংটি ফর্ম্যাট করতে বা পার্সিং করেন তবে (ডিফল্ট) ব্যবহার করুন ।
- ব্যবহার করুন
CultureInfo.InvariantCulture
যদি আপনি বিন্যাস বা একটি স্ট্রিং, যাতে সফ্টওয়্যার এক টুকরা দ্বারা parseable হওয়া উচিত পার্স।
- কদাচিৎ একটি নির্দিষ্ট জাতীয় সংস্কৃতি ব্যবহার করুন কারণ ব্যবহারকারী কীভাবে ফর্ম্যাট এবং পার্সিং করা হয় তা নিয়ন্ত্রণ করতে অক্ষম।