هنوز چند بایت مونده که پیدا کنم...

الگوهای منطقی و خصوصیتی در دات نت کور 5

Logical and property patterns in .NET Core 5


C# 9 الگوهای جدیدی رو پشتیبانی می کنه. شما می تونید در کدهای زیر، نمونه ای از یه الگوی منطقی رو ببینید (بر گرفته از CCS811 Gas sensor)


خوب این به سادگی داره بررسی میکنه که اگر کلید وارد شده حرف Y  یا y بود کاری رو انجام بده. به فرم استفاده دقت کنید!



یک الگوی جدید دیگه، الگوهای خصوصیتی هست. میتونین تعداد بیشتری ازاین الگوها رو در Mycroft information access 6.0 ببینین. کد زیر از نمونه ی PN532 RFID and NFC reader گرفته شده.



این کد به ما میگه که pollingType (که  از نوع byte[ ]?) تهی هست یا اندازش 15 بایت هست!



حالا من میخوام 2 تا الگوی دیگه به شما نشون بدم که اولیش الگوی منطقی از Mcp25xxx CAN bus هست:

ببینید چطوری یه متد نوشته که فقط کارش مقایسه هست!!!



دومین الگو، یه الگوی منطقی دیگه از Piezo Buzzer Controller هست:

اینجا هم داره میگه اگر متغیر element که حالا یه جایی تعریف شده؛ از نوع NoteElement نبود یه مدتی صبر کن. اما اگر بود بیا بذارش (انستابش بده) تو متغیر noteElement و تو بلاک else خصوصیات Note  و Octave این متغیر رو استفاده کن. زیبا نیست؟

امتحانش کنید ببنید متغیر noteElement  از نوع ارجاعی هست یا ارسالی.


ویراست فنی: محمد ملک مکان

//
// logical pattern samples in .net core 5.0
//

// #1
var threshChoice = Console.ReadKey();
Console.WriteLine();
if (threshChoice.KeyChar is 'Y' or 'y')
{
   TestThresholdAndInterrupt(ccs811);
}

// #2
public static byte GetRxBufferNumber(Address address) => address switch
{
    >= Address.RxB0D0 and <= Address.RxB0D7 => 0,
    >= Address.RxB1D0 and <= Address.RxB1D7 => 1,
    _ => throw new ArgumentException(nameof(address), $"Invalid address value {address}."),
};

// #3
if (element is not NoteElement noteElement)
{
    // In case it's a pause element we have only just wait desired time.
    Thread.Sleep(durationInMilliseconds);
}
else
{
    // In case it's a note element we play it.
    var frequency = GetFrequency(noteElement.Note, noteElement.Octave);
    _buzzer.PlayTone(frequency, (int)(durationInMilliseconds * 0.7));
    Thread.Sleep((int)(durationInMilliseconds * 0.3));
}

//
// property pattern samples in .net core 5.0
//
if (pollingType is null or { Length: >15 })
{
    return null;
}
نویسنده : شمیم گلچین نژاد
آدینه 14 آذر 1399
+ 40 -

خوشحال میشیم نظرتُ بدونیم