শ্রেণিগুলি হল রেফারেন্সের ধরণ এবং কাঠামোগুলি হ'ল মান ধরণের।
যখন আমি বলি শ্রেণিগুলি রেফারেন্সের ধরণ,
মূলত এগুলিতে একটি উদাহরণ ভেরিয়েবলের ঠিকানা থাকবে।
উদাহরণ স্বরূপ:
Class MyClass
{
Public Int DataMember; //By default, accessibility of class data members
//will be private. So I am making it as Public which
//can be accessed outside of the class.
}
প্রধান পদ্ধতিতে,
আমি নতুন শ্রেণীর অপারেটর ব্যবহার করে এই শ্রেণীর একটি উদাহরণ তৈরি করতে পারি যা এই শ্রেণীর জন্য মেমরি বরাদ্দ করে
এবং এর ভিত্তি ঠিকানাটি MyClass টাইপ ভেরিয়েবল (_myClassObject2) এ সঞ্চয় করে।
Static Public void Main (string[] arg)
{
MyClass _myClassObject1 = new MyClass();
_myClassObject1.DataMember = 10;
MyClass _myClassObject2 = _myClassObject1;
_myClassObject2.DataMember=20;
}
উপরের প্রোগ্রামে, MyClass _myClassObject2 = _myClassObject1; নির্দেশ নির্দেশ করে যে মাইক্লাস টাইপ উভয় ভেরিয়েবল
- myClassObject1
- myClassObject2
এবং একই মেমরি অবস্থান নির্দেশ করবে।
এটি মূলত একই মেমরির অবস্থানটিকে একই ধরণের অন্য ভেরিয়েবলে নির্ধারণ করে।
সুতরাং মাইক্লাস টাইপের যে কোনও একটি বস্তুর মধ্যে আমরা যে কোনও পরিবর্তন করি তা অন্যের উপর প্রভাব ফেলবে
যেহেতু উভয়ই একই মেমরির অবস্থানটির দিকে নির্দেশ করছে।
"_myClassObject1. ডেটা মেম্বার = 10;" এই লাইনে অবজেক্টের ডেটা মেম্বারদের উভয়ই 10 এর মান ধারণ করে
; "_myClassObject2.DataMember = 20;" এই লাইনে অবজেক্টের ডেটা মেম্বার উভয়ই 20 এর মান ধারণ করে
Event টির Event আমরা পয়েন্টারগুলির মাধ্যমে কোনও অবজেক্টের ডাটাবেসগুলি অ্যাক্সেস করছি are
শ্রেণীর চেয়ে পৃথক, কাঠামো মান ধরণের। উদাহরণ স্বরূপ:
Structure MyStructure
{
Public Int DataMember; //By default, accessibility of Structure data
//members will be private. So I am making it as
//Public which can be accessed out side of the structure.
}
Static Public void Main (string[] arg)
{
MyStructure _myStructObject1 = new MyStructure();
_myStructObject1.DataMember = 10;
MyStructure _myStructObject2 = _myStructObject1;
_myStructObject2.DataMember = 20;
}
উপরের প্রোগ্রামে,
নতুন অপারেটর ব্যবহার করে মাই স্ট্রাকচার টাইপের অবজেক্ট ইনস্ট্যান্ট
করা এবং মাই স্ট্রাকচার টাইপটির মাই স্ট্রাক্টঅবজেক্ট ভেরিয়েবলের মধ্যে ঠিকানা সংরক্ষণ করা এবং
"_myStructObject1.DataMember = 10" ব্যবহার করে কাঠামোর ডেটা সদস্যকে 10 মান নির্ধারণ করা।
পরের লাইনে,
আমি মাইস্ট্রাকচার টাইপের আরেকটি ভেরিয়েবল _myStructObject2 ঘোষণা করছি এবং এর মধ্যে _myStructObject1 নির্ধারণ করছি।
এখানে। নেট সি # সংকলক _myStructObject1 অবজেক্টের আরেকটি অনুলিপি তৈরি করে এবং
মেমরি স্ট্রাকচার ভেরিয়েবল _myStructObject2 এ সেই মেমরির অবস্থান নির্ধারণ করে।
সুতরাং _myStructObject1 এ আমরা যাই পরিবর্তন করবো না তা মাইস্ট্রাক্ট্রু টাইপের আর কোনও ভেরিয়েবল _myStructObject2 এর উপর কখনই প্রভাব ফেলবে না।
সে কারণেই আমরা বলছি স্ট্রাকচারগুলি মান ধরণের।
সুতরাং ক্লাসের জন্য তাত্ক্ষণিক বেস ক্লাসটি অবজেক্ট এবং স্ট্রাকচারের জন্য তাত্ক্ষণিক বেস ক্লাস হ'ল ভ্যালু টাইপ যা অবজেক্ট থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।
ক্লাসগুলি একটি উত্তরাধিকারকে সমর্থন করবে যেখানে স্ট্রাকচারগুলি তা করবে না।
আমরা কীভাবে বলছি?
আর এর পেছনের কারণ কী?
উত্তর ক্লাস হয়।
এটি বিমূর্ত, সিল করা, স্ট্যাটিক এবং আংশিক হতে পারে এবং ব্যক্তিগত, সুরক্ষিত এবং অভ্যন্তরীণ সুরক্ষিত হতে পারে না।