بسیاری از انواع اعضای struct و کلاس (که فیلدها استثنای اصلی آن هستند) میتوانند از نحوهی نگارش اعضای دارای بدنهی عبارتی استفاده کنند. تعریف یک عضو با یک عبارت، اغلب کدی موجزتر و خواناتر از بلوکها/دستورهای سنتی تولید میکند.
متدها و خاصیتهای فقطخواندنی از جمله اعضایی هستند که میتوان آنها را با بدنهی عبارتی تعریف کرد.
public int Times3(int input) => input * 3;
public int Interesting => 1729;
switch
یک عبارت switch میتواند یک مقدار را با یک مورد از میان مجموعهای از الگوها تطبیق دهد و مقدار متناظر را برگرداند یا اقدام متناظر را انجام دهد. این تناظر با نماد => نشان داده میشود. علاوه بر این، هر الگو میتواند یک محافظ مورد اختیاری داشته باشد که با کلیدواژهی when معرفی میشود. عبارت محافظ مورد باید «درست» ارزیابی شود تا آن شاخه از switch انتخاب شود. موردها (که به آنها شاخههای switch هم میگویند) به ترتیب متن ارزیابی میشوند و به محض یافتن یک تطبیق، فرایند متوقف میشود و مقدار متناظر برگردانده میشود.
double xx = 42d;
string interesting = xx switch
{
0 => "I suppose zero is interesting",
3.14 when DateTime.Now.Day == 14 && DateTime.Now.Month == 3 => "Mmm pie!",
3.14 => "π",
42 => "a bit of a cliché",
1729 => "only if you are a pure mathematician",
_ => "not interesting"
};
// => interesting == "a bit of a cliché"
عملگرهای سهتایی امکان میدهند شرطهای if بهجای بلوکهای دستور، در قالب عبارت تعریف شوند. این کار با رویکردهای برنامهنویسی تابعی همراستاست و اغلب میتواند کد را گویاتر و کمخطاتر کند.
عملگر سهتایی سه عبارت را با هم ترکیب میکند: یک شرط، به دنبال آن عبارتی که در صورت «درست» بودن شرط ارزیابی و برگردانده میشود (بخش if که با ? معرفی میشود) و عبارتی که در صورت «غلط» بودن شرط ارزیابی و برگردانده میشود (بخش else که با : معرفی میشود).
int a = 3, b = 4;
int max = a > b ? a : b;
// => 4
throw
عبارتهای throw جایگزینی برای دستورهای throw هستند و بهویژه میتوانند به قدرت شرطهای سهتایی و دیگر عبارتهای ترکیبی بیفزایند.
string trimmed = str == null ? throw new ArgumentException() : str.Trim();
از شما خواسته شده است که کدی قدیمی مربوط به یک ایستگاه هواشناسی را بهبود دهید.
ایستگاه هواشناسی قرائتها را میپذیرد و نشانگرهایی مانند دما و فشار را خروجی میدهد.
هر یک از متدهای مناسب کلاس WeatherStation را با استفاده از «اعضای دارای بدنهی عبارتی» بازآرایی کنید. در جای مناسب از «عملگرهای شرطی سهگانه» و «عبارات switch» استفاده کنید تا رسایی را بهبود دهید و بهطور بالقوه خطاها را کاهش دهید.
مطمئن شوید که همهی تستها همچنان پاس میشوند.