是否可以同時對型別和子/嵌套屬性進行模式匹配?
例如,如下所示:
// Something like this would be nice
if (person is Person { Pet { Name: { } name2 }})
{
Console.WriteLine(name2);
}
類結構如下
public class Person
{
public object? Pet { get; set; }
}
public class Pet
{
public string? Name { get; set; }
}
[Test]
public void Test()
{
object person = GetPerson();
// Example of current matching
if(person is Person p && p.Pet is Pet pet && pet.Name is { } name)
{
Console.WriteLine(name);
}
// Sample inline method
Person? GetPerson()
{
return new Person();
}
}
想知道這 3 項檢查是否可以在 1 行中完成,而無需保存中間變數?
uj5u.com熱心網友回復:
在 C# 8 中是可能的。歸功于 Rider,建議將其重構為:
if(person is Person {Pet: Pet {Name: { } name}})
{
Console.WriteLine(name);
}
從 C# 8 開始,語言中有遞回模式匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/513889.html
標籤:C#。网重构
上一篇:重繪頁面后聯系人才被洗掉
