gpt4 book ai didi

vb.net - 使用默认形式 String.IsNullOrEmpty(str) 而不是 str.IsNullOrEmpty() 有什么意义吗?

转载 作者:行者123 更新时间:2023-12-02 06:55:31 25 4
gpt4 key购买 nike

.NET 库有 String.IsNullOrEmpty(value As String) .

我可以创造更舒适<stringValue>.IsNullOrEmpty()通过简单的扩展方法:

<Extension>
Function IsNullOrEmpty(s As String) As Boolean
Return String.IsNullOrEmpty(s)
End Function

我的第一手快速理解是这不是开箱即用的,因为它可以抛出 NullReferenceException如果是 null .直到我发现这不是真的,因为 Nothing in String 变量被键入为字符串。

Dim s As String = Nothing
If s.IsNullOrEmpty() Then ... 'this will always return true, no exception thrown

有默认形式的意义吗 String.IsNullOrEmpty(s)而不是 s.IsNullOrEmpty()我错过了什么?

当然,在立即窗口中我不能输入

? Nothing.IsNullOrEmpty()

但无论如何都是废话。这正常工作:

? CStr(Nothing).IsNullOrEmpty()

最佳答案

之所以默认是String中的静态方法而不是普通方法是因为在Nothing/null上调用方法会引发异常。因此,您必须先检查 Nothing/null,然后再调用另一个方法来检查它是否可能为 Nothing/null 就没有意义了。

之所以你的扩展方法不会导致这个,是因为它是一个获取对象作为参数的方法,就像String中的静态方法一样。

但如果您的意思是为什么没有完成扩展方法,那么 Damien_The_Unbeliever 的回答是正确的:没有扩展方法可以开始。并且在以后创建副本可能毫无意义。

关于vb.net - 使用默认形式 String.IsNullOrEmpty(str) 而不是 str.IsNullOrEmpty() 有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023921/

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