ল্যাম্বডা এক্সপ্রেশন ব্যবহার করুন
MyClass result = list.Find(x => x.GetId() == "xy");
দ্রষ্টব্য: সি # এর বৈশিষ্ট্যের জন্য একটি অন্তর্নির্মিত বাক্য গঠন রয়েছে। গেটর এবং সেটার পদ্ধতিগুলি লেখার পরিবর্তে (যেমন আপনি জাভা থেকে অভ্যস্ত হতে পারেন) লিখুন
private string _id;
public string Id
{
get
{
return _id;
}
set
{
_id = value;
}
}
value
একটি প্রাসঙ্গিক কীওয়ার্ড যা কেবল সেট অ্যাকসেসরে পরিচিত। এটি সম্পত্তিতে নির্ধারিত মান উপস্থাপন করে।
যেহেতু এই প্যাটার্নটি প্রায়শই ব্যবহৃত হয়, সি # স্বয়ংক্রিয়-প্রয়োগকৃত বৈশিষ্ট্য সরবরাহ করে । এগুলি উপরের কোডটির একটি সংক্ষিপ্ত সংস্করণ; তবে, ব্যাকিং ভেরিয়েবলটি লুকানো এবং অ্যাক্সেসযোগ্য নয় (তবে এটি ভিবিতে ক্লাসের মধ্যে থেকে অ্যাক্সেসযোগ্য)।
public string Id { get; set; }
আপনি কেবল বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন যেমন আপনি কোনও ক্ষেত্র অ্যাক্সেস করছেন:
var obj = new MyClass();
obj.Id = "xy"; // Calls the setter with "xy" assigned to the value parameter.
string id = obj.Id; // Calls the getter.
বৈশিষ্ট্য ব্যবহার করে আপনি তালিকার আইটেমগুলি এর জন্য অনুসন্ধান করতে পারেন
MyClass result = list.Find(x => x.Id == "xy");
আপনার যদি কেবল পঠনযোগ্য সম্পত্তি প্রয়োজন হয় তবে আপনি স্বয়ংক্রিয়ভাবে প্রয়োগ করা বৈশিষ্ট্যগুলিও ব্যবহার করতে পারেন:
public string Id { get; private set; }
এটি আপনাকে Id
ক্লাসের মধ্যে সেট করতে সক্ষম করে তবে বাইরে থেকে নয়। আপনার যদি এটি উত্পন্ন ক্লাসে সেট করার প্রয়োজন হয় তবে আপনি সেটারও সুরক্ষা দিতে পারেন
public string Id { get; protected set; }
এবং পরিশেষে, আপনি সম্পত্তি হিসাবে ঘোষণা করতে পারেন virtual
এবং সেগুলি ডেরাইভিং ক্লাসগুলিতে ওভাররাইড করতে পারেন , যাতে আপনাকে গেটার এবং সেটটারদের জন্য বিভিন্ন বাস্তবায়ন সরবরাহ করতে দেয়; যেমন সাধারণ ভার্চুয়াল পদ্ধতিতে।
সি # 6.0 (ভিজ্যুয়াল স্টুডিও 2015, রোজলিন) যেহেতু আপনি একটি ইনলাইন ইনিশিয়ালাইজারের সাহায্যে কেবল গেটর-অটো-বৈশিষ্ট্যগুলি লিখতে পারেন
public string Id { get; } = "A07"; // Evaluated once when object is initialized.
পরিবর্তে কনস্ট্রাক্টরের অভ্যন্তরে গেটর-কেবল বৈশিষ্ট্যগুলি শুরু করতে পারেন। কেবলমাত্র গেটর-অটো-বৈশিষ্ট্যগুলি কোনও ব্যক্তিগত সেটারের সাথে স্ব-বাস্তবায়িত বৈশিষ্ট্যগুলির বিপরীতে সত্য পঠনযোগ্য বৈশিষ্ট্য।
এটি রিড-রাইট অটো-প্রোপার্টিগুলির সাথেও কাজ করে:
public string Id { get; set; } = "A07";
সি # 6.0 দিয়ে শুরু করে আপনি প্রকাশ-দেহী সদস্য হিসাবেও বৈশিষ্ট্যগুলি লিখতে পারেন
public DateTime Yesterday => DateTime.Date.AddDays(-1); // Evaluated at each call.
// Instead of
public DateTime Yesterday { get { return DateTime.Date.AddDays(-1); } }
দেখুন:। নেট কম্পাইলার প্ল্যাটফর্ম ("রোজলিন")
সি # 6 তে নতুন ভাষার বৈশিষ্ট্য
সি # 7.0 দিয়ে শুরু করে, গেটর এবং সেটার উভয়ই এক্সপ্রেশন বডি সহ লেখা যেতে পারে:
public string Name
{
get => _name; // getter
set => _name = value; // setter
}
নোট করুন যে এই ক্ষেত্রে সেটারটি অবশ্যই একটি এক্সপ্রেশন হবে। এটি বিবৃতি হতে পারে না। উপরের উদাহরণটি কাজ করে, কারণ সি # তে একটি অ্যাসাইনমেন্ট একটি অভিব্যক্তি বা বিবৃতি হিসাবে ব্যবহার করা যেতে পারে। একটি অ্যাসাইনমেন্ট এক্সপ্রেশনের মান হ'ল নির্ধারিত মান যেখানে অ্যাসাইনমেন্টটি নিজেই একটি পার্শ্ব প্রতিক্রিয়া হয়। এটি আপনাকে একবারে একাধিক ভেরিয়েবলের মান নির্ধারণ করতে দেয়: x = y = z = 0
সমতুল্য x = (y = (z = 0))
এবং স্টেটমেন্টগুলির মতো একই প্রভাব রাখে x = 0; y = 0; z = 0;
।
ভাষার পরবর্তী সংস্করণ, সি # 9.0, সম্ভবত ২০২০ সালের নভেম্বরে উপলভ্য, কেবলমাত্র পঠনযোগ্য (বা আরও একবারে ভাল করে একবারে) বৈশিষ্ট্যগুলি মঞ্জুরি দেবে যা আপনি কোনও অবজেক্ট ইনিশিয়ালাইজারে আরম্ভ করতে পারবেন। এটি বর্তমানে গেটর-কেবল বৈশিষ্ট্যগুলির সাথেই সম্ভব নয়।
public string Name { get; init; }
var c = new C { Name = "c-sharp" };
IQueryable<T> result = db.Set<T>().Find(//just id here//).ToList();
এটি ইতিমধ্যে জানতে পারে যে আপনি প্রাথমিক কী খুঁজছেন। শুধু তথ্যের জন্য।