2017-03-01 1 views
2

Ich bin mit C# 6 und ich habe folgend:überprüft null in C# 6 mit Standardwert

public class Information { 
    public String[] Keywords { get; set; } 
} 

Information information = new Information { 
    Keywords = new String[] { "A", "B" }; 
} 

String keywords = String.Join(",", information?.Keywords ?? String.Empty); 

ich Überprüfung mich, ob Informationen null ist (in meinem realen Code kann es sein). Wenn dies der Fall ist, treten Sie einem String.Empty bei, da String.Join einen Fehler gibt, wenn Sie versuchen, null beizutreten. Wenn es nicht null ist, dann schließe dich einfach den Informationen an.Schlüsselwörter.

Allerdings bekomme ich diesen Fehler:

Operator '??' cannot be applied to operands of type 'string[]' and 'string' 

Ich war auf einigen Blogs suchen und angeblich würde dies funktionieren.

Fehle ich etwas?

Was ist die beste Alternative, um diese Prüfung durchzuführen und die Zeichenfolge in einer Zeile zu verbinden?

Antwort

9

Da die Typen auf beiden Seiten des ?? (null-coalescing)-Operators übereinstimmen müssen, sollten Sie ein Zeichenfolgenarray übergeben, in diesem Fall könnten Sie ein leeres Zeichenfolgenarray übergeben.

String keywords = String.Join(",", information?.Keywords ?? new string[0]); 
+1

dass es behebt ... vermisste ich die nicht passenden Typen. –

+0

@MiguelMoura Sie zitiert ausdrücklich die Fehlermeldung so viel zu sagen ... – Servy

+0

@Servy habe ich die Fehlerphrase verpasst verstanden. Ich interpretierte als Operand ?? kann nicht auf die Typen String [] und String angewendet werden, anstatt zu interpretieren, da die Typen nicht übereinstimmen. Sehen? –

1

Die beste Alternative für null zu überprüfen wäre vor die Saiten verbindet:

var keywords = information?.Keywords == null ? "" : string.Join(",", information.Keywords); 
Verwandte Themen