What does happen with nullable
public static void Write(this IYamlStream stream, string Key, ref string? value, ScalarStyle style = ScalarStyle.Any)
i have this, what does happen when value is non nullable? is it boxed?
can i somehow write an extension method for a nullable value and a non nullable value? when doing so it says that the metohd is allready defined but one method is about a boxed string and the other one isnt so isnt it different in the end?7 Replies
strings are reference types and do not get boxed
oh... so for primtives like int and int? it makes 2 different methods but not for string as int is a value type
yes, you will see that if you try making an overload with
ref string
instead of ref string?
it will not let you
it is an annotation for the compiler to provide helpful warnings, it does not change the behavior at runtime in any way (when applied to reference types)int?
and int
are two different types, so that works fine
int?
is just syntax sugar for Nullable<int>
thank you guys
Even if you have
int?
it does not get boxed because c# just wraps it in a struct that imitates a nullable context
That's why you always need to do int.value
As for combining it with ref
, dunnoref
doesn't add runtime variability on the type and can't be stored long-term on the heap so no need for boxing. It's a local reference to a struct like any other struct (or primitive)