Возможно, это простой вопрос, но я пытаюсь использовать весь метод преобразования! и у него все еще есть ошибка! ты поможешь мне?
десятичное? (с десятичной точностью) до десятичной
Возможно, это простой вопрос, но я пытаюсь использовать весь метод преобразования! и у него все еще есть ошибка! ты поможешь мне?
десятичное? (с десятичной точностью) до десятичной
Есть много вариантов...
decimal? x = ...
decimal a = (decimal)x; // works; throws if x was null
decimal b = x ?? 123M; // works; defaults to 123M if x was null
decimal c = x.Value; // works; throws if x was null
decimal d = x.GetValueOrDefault(); // works; defaults to 0M if x was null
decimal e = x.GetValueOrDefault(123M); // works; defaults to 123M if x was null
object o = x; // this is not the ideal usage!
decimal f = (decimal)o; // works; throws if x was null; boxes otherwise
Попробуйте использовать оператор ??
:
decimal? value=12;
decimal value2=value??0;
0 - это значение, которое вы хотите, когда значение decimal?
равно null.
Вам не нужно преобразовывать нулевой тип, чтобы получить его значение.
Вы просто пользуетесь HasValue
и Value
, выставленных Nullable<T>
.
Например:
Decimal? largeValue = 5830.25M;
if (largeValue.HasValue)
{
Console.WriteLine("The value of largeNumber is {0:C}.", largeValue.Value);
}
else
{
Console.WriteLine("The value of largeNumber is not defined.");
}
В качестве альтернативы вы можете использовать нулевой оператор коалесценции в С# 2.0 или новее.
Это зависит от того, что вы хотите сделать, если decimal?
null
, так как decimal
не может быть null
. Если вы хотите, чтобы значение по умолчанию равно 0, вы можете использовать этот код (используя оператор нулевого коалесцирования):
decimal? nullabledecimal = 12;
decimal myDecimal = nullabledecimal ?? 0;
Вы можете использовать.
decimal? v = 2;
decimal v2 = Convert.ToDecimal(v);
Если значение равно null (v), оно будет преобразовано в 0.