相关疑难解决方法(0)

C#vs VB.NET - 处理null结构

我遇到了这个,并想知道是否有人可以解释为什么这在VB.NET中工作,我希望它会失败,就像在C#中一样

//The C# Version

struct Person {
    public string name;
}
...
Person someone = null; //Nope! Can't do that!!
Person? someoneElse = null; //No problem, just like expected
Run Code Online (Sandbox Code Playgroud)

但是在VB.NET中...

Structure Person
    Public name As String
End Structure
...
Dim someone As Person = Nothing 'Wha? this is okay?
Run Code Online (Sandbox Code Playgroud)

没有什么不同于null(Nothing!= null - LOL?),或者这只是处理两种语言之间相同情况的不同方式?

为什么或两者之间的处理方式不同,这使得一个可以在一个,而不是另一个?

[更新]

鉴于一些评论,我更多地搞砸了......如果你想在VB.NET中允许某些东西为null,那么好像你真的必须使用Nullable ...例如...

'This is false - It is still a person'
Dim someone As Person = Nothing
Dim isSomeoneNull As Boolean = someone.Equals(Nothing) …
Run Code Online (Sandbox Code Playgroud)

c# vb.net nothing

23
推荐指数
2
解决办法
1万
查看次数

C#中的值类型和引用类型有什么区别?

我知道一些差异,

  1. 值类型存储在堆栈中,其中引用类型存储在托管堆上.
  2. 值类型变量直接包含它们的值,其中引用变量仅包含对在托管堆上创建的对象的位置的引用.

我错过了还有其他的区别......如果是的话,他们是什么?

c# types reference

9
推荐指数
2
解决办法
2万
查看次数

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

我在使用结构和函数时遇到了一些麻烦,这些函数在VB.NET中返回Nothing.

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

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
Run Code Online (Sandbox Code Playgroud)

在前面的代码中,当我返回Nothing作为Foo函数的结果时,我希望stNothing.但这不是发生的事情.

然后我在MSDN文档中找到:

为变量赋值Nothing将其设置为其声明类型的默认值.如果该类型包含变量成员,则它们都设置为其默认值.

所以我发现当我为结构分配Nothing时,它的所有成员都被设置为默认值,而不是结构本身.

另外,我试图通过声明:使st成为Nullable类型:

    Dim st As Nullable(Of Test) = Foo()  
Run Code Online (Sandbox Code Playgroud)

但是,我仍然无法使用以下方法检查st是否为Nothing:

    If st Is Nothing Then  
Run Code Online (Sandbox Code Playgroud)

要么

    If st.Equals(Nothing) Then
Run Code Online (Sandbox Code Playgroud)

那么,问题:
1 - 是否可以为结构而不是其成员分配 …

.net vb.net structure nothing data-structures

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×2

nothing ×2

vb.net ×2

.net ×1

data-structures ×1

reference ×1

structure ×1

types ×1