আপনি যা দেখছেন তা হ'ল ল্যাম্বডা এক্সপ্রেশন নয় এমন একটি অভিব্যক্তি-দেহী সদস্য ।
সংকলকটি যখন একটি অভিব্যক্ত-দেহযুক্ত সম্পত্তি সদস্যের মুখোমুখি হয় , এটি মূলত এটিকে এ জাতীয় উপস্থায় রূপান্তর করে:
public int MaxHealth
{
get
{
return Memory[Address].IsValid ? Memory[Address].Read<int>(Offs.Life.MaxHp) : 0;
}
}
( ট্রাইরোসলিন নামে একটি সরঞ্জামে কোডটি পাম্প করে আপনি এটি নিজের জন্য যাচাই করতে পারেন ))
এক্সপ্রেশন-দেহযুক্ত সদস্যরা - বেশিরভাগ সি # 6 বৈশিষ্ট্যের মতো - কেবল সিনট্যাকটিক চিনি । এর অর্থ হ'ল তারা কার্যকারিতা সরবরাহ করে না যা বিদ্যমান বৈশিষ্ট্যগুলির মাধ্যমে অন্যথায় অর্জন করা যায়নি। পরিবর্তে, এই নতুন বৈশিষ্ট্যগুলি আরও বেশি অভিব্যক্তিপূর্ণ এবং সংক্ষিপ্ত সিনট্যাক্স ব্যবহার করার অনুমতি দেয়
আপনি দেখতে পাচ্ছেন, এক্সপ্রেশন-দেহী সদস্যদের হাতে গোটা শর্টকাট রয়েছে যা সম্পত্তি সদস্যদের আরও কমপ্যাক্ট করে তোলে:
return
বিবৃতি ব্যবহার করার দরকার নেই কারণ সংকলকটি অনুমান করতে পারে যে আপনি প্রকাশের ফলাফলটি ফিরিয়ে দিতে চান
- স্টেটমেন্ট ব্লক তৈরি করার দরকার নেই কারণ শরীরটি কেবল একটিই অভিব্যক্তি
get
কীওয়ার্ডটি ব্যবহার করার দরকার নেই কারণ এটি এক্সপ্রেশন-দেহযুক্ত সদস্য সিনট্যাক্স ব্যবহারের দ্বারা নিহিত।
আমি চূড়ান্ত বিষয়টিকে সাহসী করে তুলেছি কারণ এটি আপনার আসল প্রশ্নের সাথে প্রাসঙ্গিক, যার উত্তর আমি এখনই দেব।
মধ্যে পার্থক্য...
// expression-bodied member property
public int MaxHealth => x ? y:z;
এবং...
// field with field initializer
public int MaxHealth = x ? y:z;
পার্থক্য হিসাবে একই ...
public int MaxHealth
{
get
{
return x ? y:z;
}
}
এবং...
public int MaxHealth = x ? y:z;
কোন - যদি আপনি বৈশিষ্ট্যগুলি বুঝতে পারেন - তবে তা স্পষ্ট হওয়া উচিত।
তবে কেবল স্পষ্ট করেই বলা যায়: প্রথম তালিকাটি হুডের নীচে একজন গিটার সহ এমন একটি সম্পত্তি যা প্রতিবার আপনি এটি অ্যাক্সেস করার সময় বলা হবে called দ্বিতীয় তালিকাটি হল ক্ষেত্র আরম্ভকারক সহ এমন একটি ক্ষেত্র, যার প্রকারটি ইনস্ট্যান্ট করা হলে তার অভিব্যক্তিটি কেবল একবার মূল্যায়ন করা হয়।
বাক্যবিন্যাসের এই পার্থক্যটি আসলে বেশ সূক্ষ্ম এবং একটি "গোটচা" হতে পারে যা বিল ওয়াগনার "এসি # 6 গোছা: ইনিশিয়েশন বনাম এক্সপ্রেশন বডিড মেম্বারস" শিরোনামে একটি পোস্টে বর্ণনা করেছেন ।
যদিও প্রকাশ-সাকার সদস্য ল্যামডা expression- মত , তারা না ল্যামডা এক্সপ্রেশন। মৌলিক পার্থক্যটি হ'ল ল্যাম্বডা এক্সপ্রেশনটির ফলে ডেলিগেটের উদাহরণ বা এক্সপ্রেশন ট্রি হয়। এক্সপ্রেশন-শারীরিক সদস্যগণ পর্দার পিছনে একটি সম্পত্তি উত্পন্ন করার জন্য সংকলকটির কেবল নির্দেশ are মিল (কমবেশি) শুরু হয় এবং তীর ( =>
) দিয়ে শেষ হয় with
আমি আরও যোগ করব যে এক্সপ্রেশন-দেহযুক্ত সদস্যরা সম্পত্তি সদস্যদের মধ্যে সীমাবদ্ধ নয়। তারা এই সমস্ত সদস্যের উপর কাজ করে:
- প্রোপার্টি
- Indexers
- পদ্ধতি
- অপারেটর
মধ্যে যোগ করা হয়েছে সি # 7.0
তবে তারা এই সদস্যদের নিয়ে কাজ করে না:
- নেস্টেড প্রকার
- ঘটনাবলী
- ক্ষেত্রসমূহ