gpt4 book ai didi

c# - 在 using 语句中使用 null IDisposable 值

转载 作者:行者123 更新时间:2023-11-30 19:53:43 25 4
gpt4 key购买 nike

以下代码在执行时不会产生错误:

using ((IDisposable)null) {
Console.WriteLine("A");
}
Console.WriteLine("B");

null 值是否为“允许”using如果是,它记录在何处?

我见过的大多数 C# 代码都会创建一个“虚拟/NOP”IDisposable 对象 - 是否特别需要一个非空的 Disposable 对象?有过吗?

如果/因为 null 是允许的,它允许在 using 语句内部放置一个 null guard,而不是 before 或 around。

C# Reference on Using没有提到空值。

最佳答案

是的,允许空值。 C# 5.0 规范的第 8.13 节“using 语句”说:

If a null resource is acquired, then no call to Dispose is made, and no exception is thrown.

规范随后为 using 形式的语句提供了以下扩展

using (ResourceType resource = expression) statement

resource 是引用类型时(dynamic 除外):

{
ResourceType resource = expression;
try {
statement;
}
finally {
if (resource != null) ((IDisposable)resource).Dispose();
}
}

关于c# - 在 using 语句中使用 null IDisposable 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46901162/

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