2017-04-27 14 views
4

Warum dieser Code nicht ausgeführt wird, möchte ich überprüfen, ob JSON Ganzzahl für Schlüssel PurchasedValue oder nicht enthält?():Überprüfen, ob JValue null ist

public PropertyInfo(Newtonsoft.Json.Linq.JToken jToken) 
{ 
    this.jToken = jToken; 
    int PurchasedValue = (int)(jToken["PurchasedValue"].Value ?? 0); 
} 

der Fehler ist:

Error CS0019: Operator `??' cannot be applied to operands of type `method group' and `int' (CS0019) 
+0

Es ist von Newtonsoft JSON.NET – AVEbrahimi

Antwort

4

Von meinem Verständnis jToken["PurchasedValue"] ein Nullable-Wert ist. Sie haben

int PurchasedValue = (int)(jToken["PurchasedValue"]?? 0); 

nullableObj.Value zu verwenden, kann nur nur ohne Fehler verwendet werden, wenn ein Wert für die

nullableObj ist

Ansonsten können Sie verwenden, wie

int PurchasedValue = jToken["PurchasedValue"].HasValue?jToken["PurchasedValue"].Value: 0; 

Dies kann nicht einmal Art brauchen Gießen

+0

PurchasedValue = (int) (jToken [ "PurchasedValue"] Typ = JTokenType.Null jToken [ "PurchasedValue".!? ] .Wert (): 0); – AVEbrahimi

4

Nun, es gibt ein paar Dinge hier:

Der jToken ["PurchasedValue"] könnte alles zurückgeben, so dass eine Typprüfung vorzuziehen wäre.

Sie können den Code ändern, wie folgend:

public PropertyInfo(Newtonsoft.Json.Linq.JToken jToken) 
{ 
    this.jToken = jToken; 
    int PurchasedValue = jToken["PurchasedValue"] is int ? jToken["PurchasedValue"] : 0; 
} 
Verwandte Themen