gpt4 book ai didi

.net - VB.NET 结构和什么都没有 - 问题

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

我在使用在 VB.NET 中不返回任何内容的结构和函数时遇到了一些麻烦。

让我试着用这段代码在这里解释一下:

Public Class Form1
Structure Test
Dim field1 As String
End Structure

Private Function Foo() As Test
Return Nothing
End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim st As Test = Foo()
End Sub
End Class

在前面的代码中,当我返回 Nothing 作为 Foo 函数的结果时,我希望 没什么 .但事实并非如此。

然后我在 MSDN 文档中找到:

Assigning Nothing to a variable sets it to the default value for its declared type. If that type contains variable members, they are all set to their default values.



所以我发现当我分配 时没什么对于结构,其所有成员都设置为其默认值,而不是结构本身。

另外,我尝试制作 通过声明一个 Nullable 类型:
    Dim st As Nullable(Of Test) = Foo()  

但是,我仍然无法检查 is Nothing 使用:
    If st Is Nothing Then  

或者
    If st.Equals(Nothing) Then

所以,问题:
1 - 是否可以分配 没什么结构而不是其成员?
2 - 如何检查返回结构值是否为 没什么 ?

最佳答案

结构是值类型,它不能是 Nothing。 Nullable 类型可以解决您的问题,在类型名称后面加上一个问号,使其简短而活泼。下面是一个例子:

Module Module1

Structure Test
Dim field1 As String
End Structure

Private Function Foo() As Test?
Return Nothing
End Function

Sub Main()
Dim st As Test? = Foo()
Debug.Assert(st is Nothing)
End Sub

End Module

关于.net - VB.NET 结构和什么都没有 - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169028/

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