Moh*_*sfy 3 c# if-statement shorthand
我以前在 ac# 教程中看到过它,但我似乎找不到了。
以这段代码为例:
public class Order
{
public OrderItem Item { get; set; }
}
public class OrderItem
{
public string Name { get; set; }
}
public void SomeMethod(object obj)
{
if(obj is Order && ((Order)obj).Item !=null)
{
Console.WriteLine(((Order)obj).Item.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的简写看起来像这样
public void SomeMethod(object obj)
{
if (myObj = obj is Order && myItem = myObj.Item != null)
{
Console.WriteLine(myItem.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
我无法找到正确的语法
您正在寻找模式匹配。
使用属性模式 (C# 8.0),您可以执行以下操作:
if (obj is Order { Item: { } } order)
{
Console.WriteLine(order.Item.Name);
}
Run Code Online (Sandbox Code Playgroud)
这将检查它obj是一个Order并且它具有非空Item(通过“空”属性模式),如果两者都结果为 true 将使用类型化变量执行代码块order。
或者甚至是下一个:
if (obj is Order { Item: { } item })
{
Console.WriteLine(item.Name);
}
Run Code Online (Sandbox Code Playgroud)
基本相同,但将使用item变量作为非空项。
| 归档时间: |
|
| 查看次数: |
3612 次 |
| 最近记录: |