আপনি যখন কোনও পদ্ধতিতে স্থির কীওয়ার্ড যুক্ত করেন তার অর্থ কী?
public static void doSomething(){
//Well, do something!
}
আপনি static
কিওয়ার্ডটি ক্লাসে যুক্ত করতে পারবেন ? এর মানে কি তখন?
আপনি যখন কোনও পদ্ধতিতে স্থির কীওয়ার্ড যুক্ত করেন তার অর্থ কী?
public static void doSomething(){
//Well, do something!
}
আপনি static
কিওয়ার্ডটি ক্লাসে যুক্ত করতে পারবেন ? এর মানে কি তখন?
উত্তর:
একটি static
ফাংশন, একটি নিয়মিত ( উদাহরণস্বরূপ ) ফাংশনের বিপরীতে , শ্রেণীর কোনও ঘটনার সাথে সম্পর্কিত নয়।
একটি static
বর্গ একটি বর্গ যা শুধুমাত্র ধারণ করতে পারে static
সদস্য, এবং সেইজন্য instantiated করা যাবে না।
উদাহরণ স্বরূপ:
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
কল করার জন্য InstanceMethod
, আপনার ক্লাসের একটি উদাহরণ প্রয়োজন:
SomeClass instance = new SomeClass();
instance.InstanceMethod(); //Fine
instance.StaticMethod(); //Won't compile
SomeClass.InstanceMethod(); //Won't compile
SomeClass.StaticMethod(); //Fine
অন্য দৃষ্টিকোণ থেকে: বিবেচনা করুন যে আপনি একটি স্ট্রিংয়ে কিছু পরিবর্তন করতে চান। উদাহরণস্বরূপ আপনি বড় হাতের অক্ষর ইত্যাদি তৈরি করতে চান। আপনি এই ক্রিয়াগুলির জন্য "সরঞ্জাম" নামে অন্য শ্রেণি তৈরি করেন। "সরঞ্জাম" শ্রেণীর উদাহরণ তৈরি করার কোনও অর্থ নেই কারণ সেই শ্রেণীর অভ্যন্তরে কোনও ধরণের সত্তা উপলব্ধ নেই ("ব্যক্তি" বা "শিক্ষক" শ্রেণীর সাথে তুলনা করুন)। সুতরাং আমরা এর কোনও উদাহরণ না দিয়েই "সরঞ্জাম" শ্রেণিটি ব্যবহার করার জন্য স্ট্যাটিক কীওয়ার্ডটি ব্যবহার করি এবং আপনি যখন ক্লাসের নাম ("সরঞ্জাম") এর পরে ডট টিপেন তখন আপনি যে পদ্ধতিগুলি চান সেগুলিতে অ্যাক্সেস পেতে পারেন।
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));
Console.ReadKey();
}
}
public static class Tools
{
public static string ToUpperCase(string str)
{
return str.ToUpper();
}
}
}
ক্লাসের কোনও উদাহরণ তৈরি না করা সত্ত্বেও একটি স্থিতিশীল পদ্ধতি, ক্ষেত্র, সম্পত্তি বা ইভেন্ট ক্লাসে কলযোগ্য। যদি শ্রেণির কোনও উদাহরণ তৈরি করা হয়, তবে স্থির সদস্যকে অ্যাক্সেস করতে সেগুলি ব্যবহার করা যাবে না। স্থির ক্ষেত্র এবং ইভেন্টগুলির কেবলমাত্র একটি অনুলিপি বিদ্যমান এবং স্থির পদ্ধতি এবং বৈশিষ্ট্যগুলি কেবল স্থির ক্ষেত্র এবং স্থির ইভেন্টগুলিতে অ্যাক্সেস করতে পারে। স্থির সদস্যরা প্রায়শই ডেটা বা গণনার প্রতিনিধিত্ব করতে ব্যবহৃত হয় যা বস্তুর অবস্থার প্রতিক্রিয়াতে পরিবর্তন হয় না; উদাহরণস্বরূপ, একটি গণিতের লাইব্রেরিতে সাইন এবং কোসাইন গণনা করার জন্য স্থির পদ্ধতি থাকতে পারে। স্ট্র্যাটিক ক্লাসের সদস্যদের মেম্বার ফেরতের ধরণের আগে স্ট্যাটিক কীওয়ার্ড ব্যবহার করে ঘোষণা করা হয়
অচিরেই আপনি স্থির শ্রেণি ইনস্ট্যান্ট করতে পারবেন না: প্রাক্তন:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
আপনি এটি তৈরি করতে পারবেন না:
myStaticClass msc = new myStaticClass(); // it will cause an error
আপনি কেবল তৈরি করতে পারেন:
myStaticClass.someFunction();
স্ট্যাটিক কীওয়ার্ড, যখন কোনও ক্লাসে প্রয়োগ করা হয়, কম্পাইলারকে সেই শ্রেণীর একক উদাহরণ তৈরি করতে বলে। ক্লাসের এক বা একাধিক উদাহরণ 'নতুন' করা সম্ভব নয়। স্ট্যাটিক শ্রেণীর সমস্ত পদ্ধতি তাদের নিজেরাই স্থির ঘোষণা করতে হবে।
একটি অ স্থিত শ্রেণীর স্থির পদ্ধতি থাকা এবং এটি প্রায়শই কাঙ্ক্ষিত। উদাহরণস্বরূপ একটি কারখানা পদ্ধতি যখন অন্য শ্রেণীর উদাহরণ তৈরি করে তখন প্রায়শই স্থির হিসাবে ঘোষণা করা হয় কারণ এর অর্থ হ'ল ফ্যাক্টর পদ্ধতিযুক্ত শ্রেণীর একটি নির্দিষ্ট উদাহরণ প্রয়োজন হয় না।
কিভাবে, কখন এবং কোথায় এমএসডিএন দেখুন তার একটি ভাল ব্যাখ্যার জন্য
static
শ্রেণীর কোনও উদাহরণ নেই।