Here\'s the scenario...
if (entry.Properties[\"something\"].Value != null)
attribs.something = entry.Properties[\"something\"].Value.ToString();
<
Convert.ToString(entry.Properties["something"].Value);
As a variation to RexM's answer:
attribs.something = (entry.Properties["something"].Value ?? attribs.something).ToString()
The only downside would be that the attribs.something would be assigned a value (itself, in this example) even if entry.Properties["something"].Value was null - which could be expensive if the .something property did some other processing and/or this line executes a lot (like in a loop).
If you are targeting the .NET Framework 3.5, the most elegant solution would be an extension method in my opinion.
public static class ObjectExtensions
{
public static string NullSafeToString(this object obj)
{
return obj != null ? obj.ToString() : String.Empty;
}
}
Then to use:
attribs.something = entry.Properties["something"].Value.NullSafeToString();
Can you not do:
attribs.something = entry.Properties["something"].Value as string;
How about using an auxiliary method like this:
attribs.something = getString(
entry.Properties["something"].Value,
attribs.something);
static String getString(
Object obj,
String defaultString)
{
if (obj == null) return defaultString;
return obj.ToString();
}
Alternatively, you could use the ??
operator:
attribs.something =
(entry.Properties["something"].Value ?? attribs.something).ToString();
(note the redundant ToString()
call when the value is null
)
In C# 6.0 you can do it in a very elegant way:
attribs.something = entry.Properties["something"].Value?.ToString();
And here is an article about new null-conditional operator.