Возможно, это простой вопрос, но я пытаюсь использовать весь метод преобразования! и у него все еще есть ошибка! ты поможешь мне?
десятичное? (с десятичной точностью) до десятичной
Возможно, это простой вопрос, но я пытаюсь использовать весь метод преобразования! и у него все еще есть ошибка! ты поможешь мне?
десятичное? (с десятичной точностью) до десятичной
Есть много вариантов...
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.