VB.NET 空合并运算符? [复制]
Posted
技术标签:
【中文标题】VB.NET 空合并运算符? [复制]【英文标题】:VB.NET null coalescing operator? [duplicate] 【发布时间】:2011-10-11 04:28:46 【问题描述】:可能的重复:Coalesce operator and Conditional operator in VB.NETIs there a VB.NET equivalent for C#'s ?? operator?
是否有等效于 C# 空值合并运算符的内置 VB.NET?
【问题讨论】:
***.com/questions/629036/…的可能重复 自 VS 2015 以来,现在可以使用 ?。在 vb.Net 中。Dim x = Obj?.Child?.AnotherChild?.Something?.AString
x 是一个字符串,如果任何对象都不是,则为 Nothing,如果所有对象都不是,则设置。
@Edamreed 你应该至少回答其中一个重复项或这个问题。
@Edamreed ?.
是空条件运算符(又名安全导航运算符),而不是问题询问的 ??
空合并运算符。
【参考方案1】:
是的,只要您使用的是 VB 9 或更高版本(包含在 Visual Studio 2008 中)。
您可以使用重载的If
operator 版本只接受两个参数:
Dim myVar? As Integer = Nothing
Console.WriteLine(If(myVar, 7))
更多信息可以在 VB.NET 团队的博客文章中找到here。
(是的,这是一个运算符,尽管它看起来像一个函数。它将编译为与 C# 中“正确”的空合并运算符相同的 IL。)
示例
Dim b As Boolean?
Console.WriteLine("0.", If(b, "this is expected when b is nothing"))
'output: this is expected when b is nothing.
b = False
Console.WriteLine("0.", If(b, "this is unexpected when b is false"))
'output: False.
b = True
Console.WriteLine("0.", If(b, "this is unexpected when b is true"))
'output: True.
【讨论】:
应该注意,与 C# 运算符相反,VB.NET 实现不允许 throw 表达式。它只接受值表达式。【参考方案2】:我不相信有内置的 VB.Net 等价物,但这里有一个答案:null coalesce operator in VB.Net(8)
【讨论】:
如果您发现重复的问题,请将问题标记为重复,而不是发布链接到重复问题的答案。这有助于减少网站上的混乱。仅当您认为可以为问题增加价值 时才发布答案。谢谢! @Cody Gray -- 谢谢,下次会做。【参考方案3】:根据这个question,答案似乎是If()
【讨论】:
如果您发现重复的问题,请将问题标记为重复,而不是发布链接到重复问题的答案。这有助于减少网站上的混乱。仅当您认为可以为问题增加价值时才发布答案。谢谢! 对不起,我的错。没有意识到;不过,将来一定会牢记这一点。【参考方案4】:没有。使用GetValueOrDefault
;这就是它存在的原因!
【讨论】:
GetValueOrDefault(ByVal default As T)
强制评估默认参数,即使它不是必需的,null-coalescing 运算符只会在 HasValue
为 false 时评估默认值。以上是关于VB.NET 空合并运算符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章