gpt4 book ai didi

c# - 在哪里可以找到 "Nullable friendly pattern"的文档?

转载 作者:行者123 更新时间:2023-12-03 23:42:25 24 4
gpt4 key购买 nike

https://github.com/dotnet/csharplang/blob/master/proposals/csharp-9.0/nullable-reference-types-specification.md#element-access使用了以下代码,我不明白,也没有找到任何文档:

// Nullable friendly pattern
if (array[0] is { } o)
{
Console.WriteLine(o.ToString());
}
我的不理解是指空的大括号。哪里记录了如何理解/使用它。
是否可以在其他地方使用此方案“{} var-name”,或者它是否与 is-operator 的用法绑定(bind)?

最佳答案

它是 C# 模式匹配语言功能的一部分,尽管没有明确命名。
关于 recursive pattern matching 的文档在属性模式部分提到了它,显示了检查不为空的方法,并给出了 string 的示例.

Note that a null-checking pattern falls out of a trivial propertypattern. To check if the string s is non-null, you can write any of the following forms

if (s is object o) ... // o is of type object
if (s is string x) ... // x is of type string
if (s is {} x) ... // x is of type string
if (s is {}) ...

一个 tutorial给出了在 switch 中使用的另一个示例声明并指定

The { } case matches any non-null object that didn't match an earlier arm.

public decimal CalculateToll(object vehicle) => vehicle switch
{
Car c => 2.00m,
Taxi t => 3.50m,
Bus b => 5.00m,
DeliveryTruck t => 10.00m,
{ } => throw new ArgumentException(message: "Not a known vehicle type", paramName: nameof(vehicle)),
null => throw new ArgumentNullException(nameof(vehicle))
};

发生的事情是 if (array[0] is { } o)被翻译成 if (array[0] != null) .
您可以在 https://sharplab.io 上查看

关于c# - 在哪里可以找到 "Nullable friendly pattern"的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64954655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com