c# record的使用例子
C# 9 中引入了 record
,record
是一个特殊类,用它来实现 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
}
}
}