Ich habe eine Methode, die eine Nullable-dezimal wie dies ein wenig aussieht welche Unterschrift akzeptiert: entwederein Verfahren mit einem Nullable-Dezimal-Parameter übergeben null
public void MyMethod(decimal? param1)
Was bedingte ich vorbei ist, also bin ich einen Dezimalwert oder Null übergeben.
MyMethod((PassNullIfThisIsTrue) ? null : passThisDecimal);
VisualStudio sagen, dass ich dies nicht tun kann, weil es eine implizite Konvertierung zwischen null und dezimal gibt. So warf ich null als Nullable-dezimal thusly:
MyMethod((PassNullIfThisIsTrue) ? (decimal?)null : passThisDecimal);
Visual Studio ist glücklich, aber wenn ich diese Besetzung null übergeben, ich sehe param1 gleich 0.
Könnte jemand erklären, was hier los ist und/oder der beste Weg, um mit einer solchen Situation umzugehen? Ich sollte beachten, dass ich den Wert von passThisDecimal nicht ändern möchte. Danke im Voraus!
Versuchen 'passThisDecimal' als Nullable-Dezimal-Casting. Andernfalls übergeben Sie entweder eine nullfähige Dezimalzahl oder eine nicht nullbare Dezimalzahl. – LinuxDisciple
@LinuxDisciple nein, weil einer der Operanden etwas ist, dass der andere auch implizit erweitert werden kann, so dass das passiert. Mit beiden? Testen? (dezimal?) null: someDecimal' und 'test? null: (dezimal?) someDecimal' Der Typ wird 'decimal?' 'oder so sein. –