i stumbled across this C# code return default;
in a method with a struct as return type.
The closest translation to the default literal i have come across for VB is Return CType(Nothing, T)
- however, VS is suggesting to replace this expression with nothing.
Since my T is of struct (and therefore a value type which
the default value of a struct is the value produced by setting all value type fields to their default value and all reference type fields to
null
)
i was wondering what the best equivalent in VB for that would be.
Thank you in advance and best regards!
CodePudding user response:
In most cases, 'Nothing' will give you the same results as 'CType(Nothing, T)', however in other cases you lose information. e.g.,
Dim test1 = CType(Nothing, Foo)
Dim test2 = Nothing
The first local 'test1' if of type Foo, but the second is of type 'Object'. This will also affect expressions where the compiler knowing the actual type of a sub-expression changes the result of the expression. For this reason, I doubt if VS will always recommend the use of 'Nothing' over 'CType(Nothing, Foo)'. If in doubt, use the more verbose syntax to avoid loss of information.
CodePudding user response:
i was wondering what the best equivalent in VB for that would be.
Yes, in your case Return Nothing
would be the appropriate replacement.
In general:
default
corresponds toNothing
, anddefault(T)
corresponds toCType(Nothing, T)
.
The first is for situations where the compiler can be infer the type from context, and the second one for all other situations.