Vb.net 什么是内在值类型?
什么是内在价值类型,与非内在价值类型有什么区别 在Visual Studio的VB.Net项目属性的编译页中,我找不到有关“函数返回内部值类型而不返回值”选项效果的文档。在这种情况下,“内部”可以视为“内置”选项 而且这似乎不是所有相关的,你只是错过了回报 在这种情况下,“固有”可以被视为“内置”Vb.net 什么是内在值类型?,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,什么是内在价值类型,与非内在价值类型有什么区别 在Visual Studio的VB.Net项目属性的编译页中,我找不到有关“函数返回内部值类型而不返回值”选项效果的文档。在这种情况下,“内部”可以视为“内置”选项 而且这似乎不是所有相关的,你只是错过了回报 在这种情况下,“固有”可以被视为“内置” 而且这似乎不是所有相关的,你只是错过了回报 你说得对,这里似乎没有任何文档 考虑以下代码: Module Module1 Sub Main() Console.WriteLi
而且这似乎不是所有相关的,你只是错过了回报 你说得对,这里似乎没有任何文档 考虑以下代码:
Module Module1
Sub Main()
Console.WriteLine("Foo() is {0}", Foo())
Console.ReadKey()
End Sub
Function Foo() As Integer
End Function
End Module
默认项目属性“函数返回内在值类型而不返回值”设置为“警告”,编译时会出现以下警告:
警告BC42353:函数“Foo”未在所有代码路径上返回值。您是否缺少“返回”声明
和产出
福是0
通过将该项目属性设置为Error,我们可以使此警告带着错误停止编译
如果我们将代码更改为以下内容,“内在”部分将发挥作用:
Module Module1
Sub Main()
Console.WriteLine("Foo() is {0}", Foo())
Console.ReadKey()
End Sub
Function Foo() As Bar
End Function
End Module
Structure Bar
Public a As Integer
End Structure
现在,尽管Bar
是一种值类型,但无论项目属性设置为什么,代码编译时都不会发出警告。因此,我们可以得出结论,Integer
是一种“内在”值类型,但我们的Bar
不是
这些都没有告诉我们什么是“内在”值类型。通过谷歌搜索,我发现这告诉我,如果我启动对象浏览器,右键单击左侧窗格,并告诉它按对象类型分组,我会看到:
我认为这是我们能得到的最好的。你说得对,这里似乎没有任何文档 考虑以下代码:
Module Module1
Sub Main()
Console.WriteLine("Foo() is {0}", Foo())
Console.ReadKey()
End Sub
Function Foo() As Integer
End Function
End Module
默认项目属性“函数返回内在值类型而不返回值”设置为“警告”,编译时会出现以下警告:
警告BC42353:函数“Foo”未在所有代码路径上返回值。您是否缺少“返回”声明
和产出
福是0
通过将该项目属性设置为Error,我们可以使此警告带着错误停止编译
如果我们将代码更改为以下内容,“内在”部分将发挥作用:
Module Module1
Sub Main()
Console.WriteLine("Foo() is {0}", Foo())
Console.ReadKey()
End Sub
Function Foo() As Bar
End Function
End Module
Structure Bar
Public a As Integer
End Structure
现在,尽管Bar
是一种值类型,但无论项目属性设置为什么,代码编译时都不会发出警告。因此,我们可以得出结论,Integer
是一种“内在”值类型,但我们的Bar
不是
这些都没有告诉我们什么是“内在”值类型。通过谷歌搜索,我发现这告诉我,如果我启动对象浏览器,右键单击左侧窗格,并告诉它按对象类型分组,我会看到:
我认为这是我们能得到的最好的结果。那么“Object”是一种内在的引用类型(不管这意味着什么),其他的是内在的值类型?@Tiago Yes;从这一证据中,我猜想“内在”仅仅意味着“在mscorlib中定义”…@AakashM:
System.Guid
是在mscorlib中定义的值类型,但它不是内在类型(即,没有丢失的返回值警告)。@Heinzi我的意思是“在mscorlib中定义为内在”。在编辑评论的宽限期过后,现在已经有点晚了:)@AakashM:它似乎正是那些需要编辑评论的类型。因此,我假设它不是在mscorlib(语言不可知)中硬编码的,而是在编译器中;从这一证据中,我猜想“内在”仅仅意味着“在mscorlib中定义”…@AakashM:System.Guid
是在mscorlib中定义的值类型,但它不是内在类型(即,没有丢失的返回值警告)。@Heinzi我的意思是“在mscorlib中定义为内在”。在编辑评论的宽限期过后,现在已经有点晚了:)@AakashM:它似乎正是那些需要编辑评论的类型。因此,我假设它不是在mscorlib(语言不可知)中硬编码的,而是在编译器中。当设置为warning/error时,该选项在编译项目时没有标记任何内容。但是我找不到任何文档,而且我是一个超级类型。当设置为警告/错误时,该选项在编译项目时没有标记任何内容。但我找不到任何文档,我是一个傲慢的人。