In C# 5 o precedente il tuo codice è probabilmente buono come lo è, anche se potresti sempre estrapolarlo al suo metodo se l'hai cosparso dappertutto.
Considerare inoltre di inserire "N/A"
in una costante, nel caso in cui si desideri modificarlo.
Tuttavia, in C# 6 si può cambiare un po ', anche se non sarà possibile ottenere molto meglio:
var stringToDisplay = nullableDecimal?.ToString() ?? "N/A";
L'operatore ?.
si chiama l'operatore "null-riserva" ed è fondamentalmente una breve sintassi per l'espressione che dovevi iniziare.
Fondamentalmente, la parte della espressione significa questo:
string temp = nullableDecimal != null ? nullableDecimal.ToString() : null;
anche se l'operatore ?.
avrebbe valutare solo la parte prima volta, non due volte, quindi è più simile a questo:
var operand = nullableDecimal;
string temp = operand != null ? operand.ToString() : null;
Non è molto importante qui, ma se fosse una chiamata al metodo, potrebbe esserlo.
Per quanto riguarda l'estrazione in un metodo, è sufficiente creare un metodo di estensione:
public static class MyNullableDecimalExtensions
{
public static string ToDisplayText(this decimal? value)
{
if (decimal.HasValue)
return decimal.Value.ToString();
return "N/A";
}
}
io non sono eccessivamente appassionato di sintassi ?:
operatore, quindi in un metodo come questo vorrei scrivere il pieno se -indicazione invece.
Poi si potrebbe chiamare in questo modo:
var stringToDisplay = nullableDecimal.ToDisplayText();
Quale versione C#? –
Perché non un metodo di estensione generico? –