আমি কীভাবে একটি ভেরিয়েবল ঘোষণা করব যাতে প্রতিটি শ্রেণি (* .cs) উদাহরণ ছাড়াই রেফারেন্স ছাড়াই এর সামগ্রীটি অ্যাক্সেস করতে পারে?
উত্তর:
ইন C#
আপনি সত্য গ্লোবাল ভেরিয়েবল সংজ্ঞায়িত করতে পারবেন না (অর্থে তারা কোনো বর্গ অন্তর্গত না যে)।
এটি বলা হচ্ছে, এই বৈশিষ্ট্যটির নকল করতে আমি জানলাম যে সহজ পদ্ধিতি নীচে একটি ব্যবহার করে তৈরি static class
করে:
public static class Globals
{
public const Int32 BUFFER_SIZE = 512; // Unmodifiable
public static String FILE_NAME = "Output.txt"; // Modifiable
public static readonly String CODE_PREFIX = "US-"; // Unmodifiable
}
তারপরে আপনি আপনার কোডের যে কোনও জায়গায় নির্ধারিত মানগুলি পুনরুদ্ধার করতে পারেন (এটি যদি এর অংশ হিসাবে থাকে তবে namespace
):
String code = Globals.CODE_PREFIX + value.ToString();
বিভিন্ন নেমস্পেসগুলি মোকাবেলা করার জন্য, আপনি হয়:
Globals
শ্রেণিটিকে একটি নির্দিষ্ট হিসাবে অন্তর্ভুক্ত না করে ঘোষণা করুন namespace
(যাতে এটি বিশ্বব্যাপী অ্যাপ্লিকেশন নেমস্পেসে স্থাপন করা হবে);namespace
।সি # তে গ্লোবাল ভেরিয়েবলের মতো জিনিস নেই। পিরিয়ড।
আপনি চাইলে আপনার স্থির সদস্য থাকতে পারে:
public static class MyStaticValues
{
public static bool MyStaticBool {get;set;}
}
static
আপনি যে উদাহরণটি প্রদান করেছেন তা সত্যই বিশ্বব্যাপী ভ্যারাই হিসাবে বিবেচনা করা যায় না।
আপনার সফ্টওয়্যার আর্কিটেকচারের কথা বিবেচনা না করে যদি আপনার সত্যিই কোনও গ্লোবাল ভেরিয়েবলের প্রয়োজন হয় তবে তা পরিষ্কারভাবে পরীক্ষা করুন।
আসুন ধরে নিই এটি পরীক্ষায় উত্তীর্ণ হয়। ব্যবহারের উপর নির্ভর করে, গ্লোবালগুলি জাতিদের পরিস্থিতি এবং অন্যান্য অনেক "খারাপ জিনিস" দিয়ে ডিবাগ করা কঠিন হতে পারে, আপনি এমন খারাপ জিনিসগুলি পরিচালনা করার জন্য প্রস্তুত এমন কোণ থেকে তাদের কাছে যাওয়া ভাল। সুতরাং,
static
শ্রেণিতে (পরিচালনা করার জন্য) মোড়ানো ।এই জাতীয় শ্রেণীর জন্য প্রাথমিক রূপরেখাটি হ'ল:
public class Globals
{
private static bool _expired;
public static bool Expired
{
get
{
// Reads are usually simple
return _expired;
}
set
{
// You can add logic here for race conditions,
// or other measurements
_expired = value;
}
}
// Perhaps extend this to have Read-Modify-Write static methods
// for data integrity during concurrency? Situational.
}
অন্যান্য শ্রেণি থেকে ব্যবহার (একই নাম স্থানের মধ্যে)
// Read
bool areWeAlive = Globals.Expired;
// Write
// past deadline
Globals.Expired = true;
এটির জন্য একটি দরকারী বৈশিষ্ট্য using static
অন্যরা যেমন বলেছে, আপনার গ্লোবালগুলির জন্য আপনাকে একটি ক্লাস তৈরি করতে হবে:
public static class Globals {
public const float PI = 3.14;
}
তবে আপনি ক্লাসের নামটি স্থির বৈশিষ্ট্যের সামনে আর লেখার জন্য এটি এ জাতীয়ভাবে আমদানি করতে পারেন:
using static Globals;
[...]
Console.WriteLine("Pi is " + PI);