c# record的使用例子

 

 

C# 9 中引入了 recordrecord 是一个特殊类,用它来实现 model 在有些情况下会非常的好用

using System;
using System.Collections.Generic;

namespace ConsoleApp9
{

    class Program
    { 
        static void Main(string[] args)
        {
            List<Status> statuses = new()
            {
                new(Category.Normal, new(20, false, 20)),
                new(Category.Warning, new(20, false, 60)),
                new(Category.Danger, new(20, true, 60)),
                new(Category.Danger, new(100, false, 20))
            };

            foreach (Status status in statuses)
            {
                string message = "";

                if (status.Category == Category.Normal)
                { 
                    message += "Let the good times roll"; 
                }

                if (status.Category == Category.Warning)
                {
                    if (status.Reading.PM25 > 50 && status.Reading.PM25 < 100)
                    {
                        message += "Check the air filters";
                    } 
                }

                if (status.Reading.PM25 > 200)
                {
                    message += "There must be a fire somewhere. Don't go outside.";
                }

                if (status.Reading.SmokeDetected)
                {
                    message += "We have a fire!";
                }

                if (status.Category == Category.Danger)
                {
                    message += "Something is badly wrong";
                }
                Console.WriteLine("message:" + message);

                Console.WriteLine("-----------------上面是优化前的---------------");

                string message2 = status switch
                {
                    { Category: Category.Normal } => "Let the good times roll",
                    { Category: Category.Warning, Reading: { PM25: > 50 and < 100 } } => "Check the air filters",
                    { Reading: { PM25: > 200 } } => "There must be a fire somewhere. Don't go outside.",
                    { Reading: { SmokeDetected: true } } => "We have a fire!",
                    { Category: Category.Danger } => "Something is badly wrong",
                    _ => "Unknown status"
                };
                Console.WriteLine("message2:" + message2);
            }
        }

        record Reading(int Temperature, bool SmokeDetected, int PM25);
        record Status(Category Category, Reading Reading);
        enum Category
        {
            Normal,
            Warning,
            Danger
        }

    }
}

 

posted @ 2021-11-01 15:09  MakeGod  阅读(621)  评论(0编辑  收藏  举报