Как я могу преобразовать десятичную? в десятичном виде - PullRequest
44 голосов
/ 02 февраля 2011

может быть, это простой вопрос, но я пробую все методы преобразования! и это все еще имеет ошибку! ты мне поможешь?

десятичное? (обнуляемый десятичный) до десятичного

Ответы [ 5 ]

95 голосов
/ 02 февраля 2011

Есть много вариантов ...

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
25 голосов
/ 02 февраля 2011

Попробуйте использовать оператор ??:

decimal? value=12;
decimal value2=value??0;

0 - это значение, которое вы хотите, когда decimal? равно нулю.

10 голосов
/ 02 февраля 2011

Вам не нужно конвертировать обнуляемый тип, чтобы получить его значение.

Вы просто используете преимущества 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.");
}

В качестве альтернативы, вы можете использовать нулевой оператор объединения в C # 2.0 или новеекак ярлык.

3 голосов
/ 02 февраля 2011

Зависит от того, что вы хотите сделать, если decimal? равно null, поскольку decimal не может быть null. Если вы хотите установить значение по умолчанию 0, вы можете использовать этот код (используя оператор объединения нулей ):

decimal? nullabledecimal = 12;

decimal myDecimal = nullabledecimal ?? 0;
0 голосов
/ 02 февраля 2011

Вы можете использовать.

decimal? v = 2;</p> <p>decimal v2 = Convert.ToDecimal(v);

Если значение равно нулю (v), оно будет преобразовано в 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...