gpt4 book ai didi

c# - 使用 [DisallowNull] 与不可为空的引用类型

转载 作者:行者123 更新时间:2023-12-03 16:32:34 32 4
gpt4 key购买 nike

我正在了解 C# 8.0 中可为空引用类型的来龙去脉
阅读时this blog关于可为空引用类型,我对以下示例感到有些困惑。

public static HandleMethods
{
public static void DisposeAndClear([DisallowNull] ref MyHandle? handle)
{
...
}
}
作者展示了如何 [DisallowNull]在这种情况下可以使用属性。但是,我的疑问是您为什么需要这里的属性?这段代码不一样吗?
public static HandleMethods
{
public static void DisposeAndClear(ref MyHandle handle)
{
...
}
}
通过删除该属性, ?MyHandle ,这会是一个类似的选择吗?
编辑:
感谢 UnholySheep,我相信我现在明白了。
public static void DisposeAndClear([DisallowNull] ref MyHandle? handle)
{
handle = null;
}
调用此版本的函数时, handle不能为空。但是,它可以在函数内部设置为空,所以当函数返回时,任何使用 handle需要检查是否 handle一片空白。

最佳答案

基于评论中的讨论
博文的重要部分如下

Typical use for this API is that we have a non-null instance that wepass by reference, but when it is cleared, the reference is null


这意味着该方法接受非 null对象,但在方法中的某个点 handle将设置为 null作为设置 handlenull在将不可为空的引用作为参数的版本中是不允许的 ( ref MyHandle handle ) 必须使用其他版本

关于c# - 使用 [DisallowNull] 与不可为空的引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64115266/

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