সুতরাং আমি যেহেতু বুঝতে পেরেছি { get; set; }
এটি একটি "অটো সম্পত্তি" যা ঠিক ক্লাউস এবং @ ব্র্যান্ডন বলেছিলেন "ব্যাকিং ফিল্ড" দিয়ে একটি সম্পত্তি লেখার জন্য শর্টহ্যান্ড। সুতরাং এই ক্ষেত্রে:
public class Genre
{
private string name; // This is the backing field
public string Name // This is your property
{
get => name;
set => name = value;
}
}
তবে আপনি যদি আমার মতো হন - প্রায় এক ঘন্টা বা তারও বেশি আগে - আপনি সম্পত্তি এবং অ্যাক্সেসরগুলি কী তা সত্যই বুঝতে পারছেন না এবং কয়েকটি প্রাথমিক পরিভাষাগুলির মধ্যে আপনার সেরা বোধগম্যতা নেই। এমএসডিএন এটির মতো স্টাফ শেখার একটি দুর্দান্ত সরঞ্জাম তবে এটি নতুনদের পক্ষে বোঝা সর্বদা সহজ নয়। তাই আমি এখানে আরও গভীরতার সাথে এটি ব্যাখ্যা করার চেষ্টা করব।
get
এবং set
হয় accessors , তারা সক্ষম অর্থ অ্যাক্সেস ডেটা এবং তথ্যে করা ব্যক্তিগত ক্ষেত্র (সাধারণত একটি থেকে ব্যাকিং ক্ষেত্র ) এবং সাধারণত থেকে তা করতে প্রকাশ্য বৈশিষ্ট্য (আপনি উপরোক্ত উদাহরণে দেখতে পারেন)।
অস্বীকার করার কোনও দরকার নেই যে উপরের বিবৃতিটি বেশ বিভ্রান্তিকর, সুতরাং আসুন কয়েকটি উদাহরণে যাওয়া যাক। যাক এই কোডটি সংগীতের জেনারগুলিকে উল্লেখ করছে। শ্রেণীর ঘরানার মধ্যে তাই আমরা বিভিন্ন ধরণের সংগীত চাইছি। ধরা যাক আমরা তিনটি জেনার রাখতে চাই: হিপ হপ, রক এবং কান্ট্রি। এটি করার জন্য আমরা ক্লাসের নামটি ব্যবহার করে সেই শ্রেণীর নতুন দৃষ্টান্ত তৈরি করব ।
Genre g1 = new Genre(); //Here we're creating a new instance of the class "Genre"
//called g1. We'll create as many as we need (3)
Genre g2 = new Genre();
Genre g3 = new Genre();
//Note the () following new Genre. I believe that's essential since we're creating a
//new instance of a class (Like I said, I'm a beginner so I can't tell you exactly why
//it's there but I do know it's essential)
এখন যেহেতু আমরা জেনার শ্রেণীর উদাহরণ তৈরি করেছি আমরা উপরে নাম সেট করা 'নাম' সম্পত্তি ব্যবহার করে জেনার নামগুলি সেট করতে পারি ।
public string Name //Again, this is the 'Name' property
{ get; set; } //And this is the shorthand version the process we're doing right now
আমরা নিম্নলিখিত লিখে হিপ হপকে 'জি 1' এর নামটি সেট করতে পারি
g1.Name = "Hip Hop";
এখানে যা ঘটছে তা একরকম জটিল। যেমন আমি আগে বলেছি, get
এবং set
ব্যক্তিগত ক্ষেত্রগুলি থেকে এমন তথ্য অ্যাক্সেস করুন যা আপনি অন্যথায় অ্যাক্সেস করতে সক্ষম হবেন না। get
কেবলমাত্র সেই ব্যক্তিগত ক্ষেত্রের তথ্য পড়তে এবং তা ফিরিয়ে দিতে পারে। set
কেবলমাত্র সেই ব্যক্তিগত ক্ষেত্রে তথ্য লিখতে পারে। তবে উভয়ের সাথেই সম্পত্তি রয়েছে get
এবং set
আমরা সেই দুটি ফাংশনই করতে সক্ষম। এবং লিখে g1.Name = "Hip Hop";
আমরা বিশেষত set
আমাদের নামের সম্পত্তি থেকে ফাংশনটি ব্যবহার করছি
set
নামক একটি অন্তর্ভুক্ত পরিবর্তনশীল ব্যবহার করে value
। মূলত এর অর্থ হ'ল যে কোনও সময় আপনি "মান" দেখেন set
, এটি একটি ভেরিয়েবলকে বোঝায়; "মান" পরিবর্তনশীল। যখন আমরা লিখি g1.Name =
আমরা চলকটি =
পাস করতে ব্যবহার করি value
যা এই ক্ষেত্রে হয় "Hip Hop"
। সুতরাং আপনি মূলত এটির মতো এটি ভাবতে পারেন:
public class g1 //We've created an instance of the Genre Class called "g1"
{
private string name;
public string Name
{
get => name;
set => name = "Hip Hop"; //instead of 'value', "Hip Hop" is written because
//'value' in 'g1' was set to "Hip Hop" by previously
//writing 'g1.Name = "Hip Hop"'
}
}
এটি লক্ষ্য করা গুরুত্বপূর্ণ যে উপরের উদাহরণটি আসলে কোডটিতে লেখা হয়নি। এটি এমন একটি হাইপোথিটিকাল কোড যা আরও ব্যাকগ্রাউন্ডে যা চলছে তা উপস্থাপন করে।
তাই এখন আমরা করেছি যে সেট এর G1 উদাহরণস্বরূপ নাম জেনার , আমি মনে করেন যে আমরা করতে পারেন পেতে লেখা নাম
console.WriteLine (g1.Name); //This uses the 'get' function from our 'Name' Property
//and returns the field 'name' which we just set to
//"Hip Hop"
এবং যদি আমরা এটি চালাতাম তবে আমরা "Hip Hop"
আমাদের কনসোলটিতে যাব ।
সুতরাং এই ব্যাখ্যাটির উদ্দেশ্যে আমি আউটপুটগুলির সাথে উদাহরণটিও সম্পূর্ণ করব
using System;
public class Genre
{
public string Name { get; set; }
}
public class MainClass
{
public static void Main()
{
Genre g1 = new Genre();
Genre g2 = new Genre();
Genre g3 = new Genre();
g1.Name = "Hip Hop";
g2.Name = "Rock";
g3.Name = "Country";
Console.WriteLine ("Genres: {0}, {1}, {2}", g1.Name, g2.Name, g3.Name);
}
}
আউটপুট:
"Genres: Hip Hop, Rock, Country"