kumar
kumar

Reputation: 2944

how to do this conversion?

string mvi = Moneys.GetValue(8) as string;
if (mvi == null)
     // I am getting exception Here if its null?
     money.Currency= Convert.ToDecimal("");
else
     // Currency is Decimal
     money.Currency= Convert.ToDecimal(mvi);
// I am getting exception Here if its null?
money.Currency= Convert.ToDecimal("");

Can anybody tell me how to do this?

Upvotes: 1

Views: 430

Answers (4)

Steven Sudit
Steven Sudit

Reputation: 19630

Here's my version of Anthony Pegram's answer:

string mvi = Moneys.GetValue(8) as string;
money.Currency = 0M;
if (!String.IsNullOrEmpty(mvi))
   if (!Decimal.TryParse(mvi, out money.Currency))
     throw new FormatException("mvi");

On the whole, it looks quite a bit like the one Alex made, only it treats empty as zero and shows more error-handling.

Upvotes: 1

LBushkin
LBushkin

Reputation: 131796

You can use TryParse instead of Convert.ToDecimal():

decimal theValue;
string mvi = Moneys.GetValue(8) as string;
Decimal.TryParse( mvi, out theValue );

alternatively, you can use the null coallescing operator to handle nulls preemtively:

var theValue = Convert.ToDecimal( mvi ?? "0" );

In both cases, however, you have to decide what to do if the value coming in is not a valid decimal.

Upvotes: 1

Anthony Pegram
Anthony Pegram

Reputation: 126992

Empty string is not convertible to decimal. You could perform a check like this

if (string.IsNullOrEmpty(mvi))
{
   money.Currency = 0M;
}
else 
{
   decimal temp = 0M;
   if (decimal.TryParse(mvi, out temp))
   {
        money.Currency = temp;
   }
   else 
   {
       // you have an invalid input, handle
   }
}

Upvotes: 4

ajdams
ajdams

Reputation: 2324

http://msdn.microsoft.com/en-us/library/hf9z3s65.aspx

I think you want Convert.ToDecimal("0.0"); otherwise you get a EDIT: ArgumentNullException

Upvotes: 0

Related Questions