VB 中结构的 C# 默认文本等效于什么?



我偶然发现了这个 C# 代码return default;在一个以结构作为返回类型的方法中。 我遇到的 VB 默认文字最接近的翻译是Return CType(Nothing, T)- 但是,VS 建议用什么都没有替换这个表达式。 由于我的 T 是结构的(因此是一个值类型

结构的默认值是通过将所有值类型字段设置为默认值并将所有引用类型字段设置为null) 生成的值

我想知道 VB 中最好的等价物是什么。

提前感谢您和最诚挚的问候!

在大多数情况下,"Nothing"会给你与'CType(Nothing, T)'相同的结果,但在其他情况下你会丢失信息。 例如,

Dim test1 = CType(Nothing, Foo)
Dim test2 = Nothing

第一个本地"test1"(如果类型为 Foo),但第二个本地"test1"的类型为"对象"。这也会影响编译器知道子表达式的实际类型会更改表达式结果的表达式。出于这个原因,我怀疑VS是否总是建议使用"Nothing"而不是"CType(Nothing,Foo)"。如有疑问,请使用更详细的语法以避免信息丢失。

我想知道 VB 中最好的等价物是什么。

是的,在您的情况下,Return Nothing将是合适的替代品。

通常:

  1. default对应于Nothing,并且
  2. default(T)对应于CType(Nothing, T).

第一种适用于编译器可以从上下文推断类型的情况,第二种适用于所有其他情况。

最新更新