Vb.net SUB或函数参数中的问号是什么意思?

Vb.net SUB或函数参数中的问号是什么意思?,vb.net,function,Vb.net,Function,刚刚在ado.net SQL Insert命令中找到它 Public Sub a(b as Date?) 'Somecode End Sub 这个问号到底是什么 正如@Filburt所提到的,带问号的参数表示 请注意,您只能对确实可为空的数据类型使用这种方法。例如,字符串不能以这种方式使用 Public Sub a(s As String?) 'Some code End Sub 将产生以下编译错误 类型“String”必须是值类型或约束为“Structure”的类型参数,才

刚刚在ado.net SQL Insert命令中找到它

Public Sub a(b as Date?)
   'Somecode
End Sub

这个问号到底是什么

正如@Filburt所提到的,带问号的参数表示

请注意,您只能对确实可为空的数据类型使用这种方法。例如,字符串不能以这种方式使用

Public Sub a(s As String?)
    'Some code 
End Sub
将产生以下编译错误

类型“String”必须是值类型或约束为“Structure”的类型参数,才能与“Nullable”或Nullable修饰符“?”一起使用

可设为空的数据类型

  • 布尔
  • 字节
  • 煤焦
  • 十进制
  • 双重的
  • 枚举
  • 浮动
  • int
  • 长的
  • 斯拜特
  • 结构
  • 尤因
  • 乌龙
  • 乌什特

正如@Filburt所提到的,带问号的参数表示

请注意,您只能对确实可为空的数据类型使用这种方法。例如,字符串不能以这种方式使用

Public Sub a(s As String?)
    'Some code 
End Sub
将产生以下编译错误

类型“String”必须是值类型或约束为“Structure”的类型参数,才能与“Nullable”或Nullable修饰符“?”一起使用

可设为空的数据类型

  • 布尔
  • 字节
  • 煤焦
  • 十进制
  • 双重的
  • 枚举
  • 浮动
  • int
  • 长的
  • 斯拜特
  • 结构
  • 尤因
  • 乌龙
  • 乌什特

这表示一种类型。这表示一种类型。很高兴知道。多亏了你和@FilburtGuess,
b as Date?
是我当时的一个糟糕的代码示例,因为
DateTime
也不能为空。从技术上讲是的,但这个问题仍然有效。它必须是值类型,而不是引用类型。诸如
String
DateTime
之类的引用类型只能设置为
Nothing
,而对值类型执行此操作只会将其设置为默认值。@AFriend:a
DateTime
在默认情况下不可为null,它是一种值类型。@danielshillock:调用列表或列表中的项目以获得“可为null的类型”可能会引起混乱。它们可以设置为可为null,但默认情况下不可为null。它们是所谓的值类型(结构),总是有一个值。默认情况下,只有引用类型(类)可为空。-另外,
Date
DateTime
也是列表的一部分。很高兴知道。多亏了你和@FilburtGuess,
b as Date?
是我当时的一个糟糕的代码示例,因为
DateTime
也不能为空。从技术上讲是的,但这个问题仍然有效。它必须是值类型,而不是引用类型。诸如
String
DateTime
之类的引用类型只能设置为
Nothing
,而对值类型执行此操作只会将其设置为默认值。@AFriend:a
DateTime
在默认情况下不可为null,它是一种值类型。@danielshillock:调用列表或列表中的项目以获得“可为null的类型”可能会引起混乱。它们可以设置为可为null,但默认情况下不可为null。它们是所谓的值类型(结构),总是有一个值。默认情况下,只有引用类型(类)可为空。-此外,
Date
DateTime
也是列表的一部分。